我没有编辑 .htaccess 的经验
我想
将非 www 重定向到 www。
删除 .php 扩展名
- 设置自定义 404 页面
我设法做到了这一点(在网络和 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
答案1
您需要将 PT 标志添加到您的 RewriteRule:
RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [PT]
原因是 RewriteRule 中的替换通常被假定为文件路径,而不是 uri,因此不应用 Redirect 等指令。标志PT
(pass through) 告诉 apache 将重写规则视为 uri,并继续应用 uri 映射规则。