强制删除.htaccess中的.php扩展名

时间:2013-03-19 16:45:39

标签: apache .htaccess mod-rewrite

我知道有很多问题,比如“如何删除.php扩展名,以便/ test /将是/test.php” 但如果用户直接转到test.php它不会替换扩展名。 所以我想替换.php它应该是/。 这是我正在使用的.htacces的一部分:

RewriteEngine on

RewriteRule stuff\.php /other_stuff/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

1 个答案:

答案 0 :(得分:3)

您需要针对实际请求而不是URI(由其他规则重写)进行检查。 %{THE_REQUEST}变量在重写引擎的过程中不会改变。尝试在RewriteEngine指令正下方添加这些规则:

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