如何使用.htaccess强制隐藏.php扩展名

时间:2013-08-21 14:07:47

标签: php .htaccess redirect mod-rewrite url-rewriting

大家好,这是我的 .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

有什么方法可以做到吗?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

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

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

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