Apache - .HTACCESS применяет предыдущие условия к текущему URL перезаписи - PullRequest
0 голосов
/ 04 декабря 2018

Мой .htaccess применяет RewriteCond из предыдущих RewriteRule к текущим RewriteRule.

Например, example.com/acme перенаправляется на http://www.example.com/index.php?url=acme.

Почему эта конфигурация будет перенаправлена ​​на index.php?index.php RewriteRule даже не R=301RewriteCond, которые делают исключения, когда request_uri содержит строку acme, даже не должны применять себя к этому RewriteRule, поскольку у них есть свои RewriteRule.

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(txt) [OR]
RewriteCond %{REQUEST_URI} robots\.txt
RewriteCond %{REQUEST_URI} !acme
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !\.(txt) [OR]
RewriteCond %{REQUEST_URI} robots\.txt
RewriteCond %{HTTPS} !=off
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

1 Ответ

0 голосов
/ 05 декабря 2018

Кажется, он выполнил 2 правила перезаписи одновременно.Добавление флага [END] устранило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...