0

这是我的.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,所以不要像我研究过的那样将其标记为重复。

4

1 回答 1

1

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

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

更多的:

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

于 2013-08-20T00:55:01.043 回答