0

大家好,这是我的.htaccess文件代码

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

它工作得很好,但我想知道是否可以强制隐藏 .php 扩展名,所以即使我去了www.example.com/foo.php我也会被重定向到www.example.com/foo

有什么办法可以做到吗?

4

2 回答 2

1

这是可能的,但我们必须注意不要生成重定向循环,当非 php URL 重定向到 php 时。并且 php URL 重定向到一个非 php 的。另外我不喜欢这个想法,因为它会创建一个额外的重定向,这会减慢站点响应。

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Redirect non-php to php and stop futher processing
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

#redirect .php to non-php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.php$ $1 [R=301,L]
于 2013-08-21T14:48:18.880 回答
0

您可以匹配请求而不是 URI 以防止循环:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\.php
RewriteRule ^ /%1 [L,R=301]

您可以将其附加到 htaccess 文件的末尾。

于 2013-08-21T20:52:44.697 回答