Назад | Перейти на главную страницу

Apache mod_rewrite останавливается после первого условия

Я пытаюсь переписать этот URL следующим образом:

для них у меня есть следующие правила mod_rewrite в файле .htaccess

именно в таком порядке.

Сейчас L после первого RewriteRule должен прекратить обработку и перенаправить его на URL-адрес субдомена + тега, но это не так. Например, fr.example.com/tag/movies отправляется catch.php?country=fr, что является последним условием в .htaccess файл.

Разве это не должно прекратиться после первого L находится?

ОТВЕТ

Что ж, оказывается, что [L] flag работает по-разному в зависимости от контекста (.htaccess/<Directory> отличный от httpd.conf) как вы видете Вот.

Итак, чтобы это работало, просто поместите правила внутри <VirtualHost> (НЕ <Directory>) и добавить / к каждому URI (/catch.php, /tag, ...). Вот и все.

Флаг L не останавливает обработку ни при каких обстоятельствах. Я бы посоветовал проверить этот поток на Stack Overflow, особенно ссылку на руководство по перезаписи Apache, а также включение RewriteLog, чтобы вы могли проверить, как mod_rewrite обрабатывает ваши правила.