RewriteRule (для удаления.php) и старый редирект 301 не работает?
У меня нет опыта в редактировании.htaccess
я хотел
перенаправить не-www на www.
удалить расширение.php
- настроить пользовательскую страницу 404
Мне удалось это сделать (в поисках решения в Интернете и на faultserver.ru), но теперь кажется, что мой старый редирект 301 с расширением.php больше не работает:
redirect 301 /download.php /features.php
как я мог это решить? Спасибо!
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\s.+\.php [NC]
RewriteRule ^(.+)\.php$ /$1 [NE,R=301,L,NC]
RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [L]
Options +FollowSymlinks
ErrorDocument 404 /404
RewriteEngine on
1 ответ
Вам нужно добавить флаг PT к вашему RewriteRule:
RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [PT]
Причина в том, что подстановка в RewriteRule обычно считается путем к файлу, а не uri, и, таким образом, такие директивы, как Redirect и т. Д., Не применяются. PT
flag (pass through) сообщает apache, что нужно рассматривать правила перезаписи как uri и продолжать применять правила отображения uri.