我没有编辑.htaccess的经验
我想
redirect非www到www。
删除.php扩展名
我设法做到这一点(寻找在networking和serverfault.com解决scheme),但现在看来,我的旧的redirect301扩展名为.php不再工作:
redirect301 /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中的replace通常被认为是一个文件path,而不是一个uri,因此,像redirect等指令不适用。 PT
标志(pass through)告诉apache将重写规则视为uri,并继续应用uri映射规则。