У меня нет опыта редактирования .htaccess
я хотел
перенаправить не-www на www.
удалить расширение .php
Мне удалось это сделать (ищу решение в сети и на serverfault.com), но теперь кажется, что мой старый редирект 301 с расширением .php больше не работает:
перенаправить 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
Вам нужно добавить флаг 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.