LINUX.ORG.RU

Странности с Apache

 , ,


0

1

Имеется

Server version: Apache/2.4.27 (Unix)

Задача: Нужно выполнить редирект на корень во всех случаях, если это не касается служебных файлов WordPress и урла /products/test.html

Прописал в .htaccess(знаю знаю, не кричите, что это плохо) следующее:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/products/test.html [NC]
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/wp- [NC]
RewriteCond %{REQUEST_FILENAME} !wp-login.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST} [QSD,R=301,L]

RewriteCond %{REQUEST_FILENAME} favicon.ico [NC]
RewriteRule ^(.*)$ $1 [L]

RewriteCond %{REQUEST_FILENAME} xmlrpc.php [NC]
RewriteRule ^(.*)xmlrpc.php$ /xmlrpc.php [L]
</IfModule>

Пытаюсь обратиться: http://site.com/products/test.html

И вижу в ответ:

HTTP/1.1 301 Moved Permanently
Date: Wed, 30 Aug 2017 05:42:04 GMT
Server: Apache/2
Location: http://site.com
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Wed, 30 Aug 2017 05:42:05 GMT
Server: Apache/2
Vary: User-Agent
Content-Type: text/html; charset=UTF-8

Ребят, где проблема? Для проверки сделал так(чтобы увидеть, что вообще в переменной), вместо:

RewriteRule ^(.*)$ http://%{HTTP_HOST} [QSD,R=301,L]
подставил
RewriteRule ^(.*)$ %{REQUEST_URI} [QSD,R=301,L]

И как оказалось %{REQUEST_URI} здесь равно /index.php Это как?


Добавил

RewriteCond %{ENV:REDIRECT_STATUS} ^$

И все заработало! А что такого магического сделала эта строчка, кто то может пояснить?

xisip
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.