重写规则将`name`和`name /`重定向到`name.php`

时间:2014-07-10 04:08:13

标签: .htaccess routing

我尝试删除文件扩展名并创建一个迷你路由器,根据其名称重定向多个页面,其中namename/被重定向到htaccess中的name.php

这就是我现在所拥有的(包括删除www)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ $1.php [L]

1 个答案:

答案 0 :(得分:1)

当您在浏览器中输入%{REQUEST_FILENAME}时,.php中不会有/name/,您的第二条规则将无效。

您可以使用此代码:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]