Подтвердить что ты не робот

Apache RewriteRule, - (тире) в качестве замены

Я часто вижу в PHP MVC приложения Apache RewriteRule, который выглядит так:

RewriteRule ^.*$ - [NC,L]

В документах на Apache говорится:

Тире указывает, что никакой замены (существующий путь проходит через нетронутый). Это используется, когда флаг (см. ниже) должен применяется без изменения пути.

Итак, из того, что я собираю, вы можете использовать это, чтобы преобразовать путь, используя флаг i.e [NC] для RewriteRules, чтобы следовать?

Может кто-нибудь, пожалуйста, объясните эту черту RewriteRule немного лучше?

4b9b3361

Ответ 1

Смотрите этот ответ:

mod_rewrite: что делает этот RewriteRule?

Это по сути означает "ничего не делать, если предыдущие RewriteConds совпадают". Следующий RewriteRule (s) вместо этого сделает что-то еще, когда RewriteConds не совпадают. В случае сообщения, в которое вы связали вас, следующий RewriteRule перезаписывает URL-адрес, включая "index.php".

Ответ 2

Я знаю, что это немного старо, но в основном говорит: "Эй, я могу использовать Rewrite, но для URL-адресов, соответствующих указанным выше RewriteCond (-ам), оставьте его и остановитесь".

Пример:

# If file or directory exists, we wanna send them there
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

# Otherwise, use our smart page handler!
RewriteRule ^(.*)\.php$ virtualPage.php?page=$1 [L]