从URL中删除.PHP?

时间:2013-08-19 23:26:23

标签: .htaccess redirect

这是我的.htaccess文件:

RewriteEngine On
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

当用户转到http://local/home时,它可以正常工作,但如果用户转到http://local/home.php.php会停留在那里,则不会在没有{.php的情况下重定向到该页面1}},所以不要像我研究过的那样将其标记为重复。

1 个答案:

答案 0 :(得分:1)

您没有任何将请求重定向到php扩展程序的规则,以便在没有它的情况下进行重定向。这就是它留在那里的原因。仅仅因为你已经添加了一个规则来内部重写一个缺少php扩展的请求并不意味着它在另一个方向上神奇地发生。在规则的顶部,您需要匹配实际请求,并在请求php文件时重定向浏览器:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /(.+)\.php(\?|\ )
RewriteRule ^ /%2 [L,R=301]

更多:

只需要认识到规则只执行其要求做的一件事,将模式与URI匹配,然后重写/重定向到目标。