Apache mod_rewrite перезаписывает, если URI не совпадает

#apache #mod-rewrite

#apache #мод-перезапись

Вопрос:

Здравствуйте, у меня проблема с RewriteCond, так как RewriteRule работает не так, как ожидалось.

Если у меня есть

 RewriteCond %{REQUEST_URI} ^/fr/?.*$
RewriteRule ^(.*)$ http://example.com/en/$1 [R=302,L]
  

Когда я обращаюсь http://example.com/fr/test он правильно перезаписывает в http://example.com/en/fr/test

Однако, когда я отменяю условие

 RewriteCond %{REQUEST_URI} !^/fr/?.*$
RewriteRule ^(.*)$ http://example.com/en/$1 [R=302,L]
  

Когда я обращаюсь http://example.com/fr/test Я перенаправляюсь на http://example.com/en/index.php хотя я бы не ожидал перенаправления.

Когда я удаляю это правило и условие, перенаправление не происходит.

Комментарии:

1. Это странно. Правило с отрицаемым условием выглядит нормально и должно работать. Вы перезапустили свой сервер?

2. @starkeen Это делается в .htaccess. Если потребуется перезапуск, изменения перенаправления не будут видны между изменениями правил.