Apache RewriteRule, - (тире) в качестве замены
Я часто вижу в PHP MVC приложения Apache RewriteRule, который выглядит так:
RewriteRule ^.*$ - [NC,L]
В документах на Apache говорится:
Тире указывает, что никакой замены (существующий путь проходит через нетронутый). Это используется, когда флаг (см. ниже) должен применяется без изменения пути.
Итак, из того, что я собираю, вы можете использовать это, чтобы преобразовать путь, используя флаг i.e [NC] для RewriteRules, чтобы следовать?
Может кто-нибудь, пожалуйста, объясните эту черту RewriteRule немного лучше?
Ответы
Ответ 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]