如何使用mod_rewrite从URL删除.php扩展名?
例如:
test.com/index.php -> test.com/index/
test.com/contact.php -> test.com/contact/
答案 0 :(得分:1)
RewriteEngine on
RewriteRule ^([^/]+)/?$ $1.php
如果用户输入http://example.com/index/
,他们将获得http://example.com/index.php
的实际页面
基本上这条规则说“匹配从基本网址到斜线的所有内容,如果没有斜线,则结束,但不包括斜杠。然后向用户提供匹配部分的.php附加到结尾。”
这只适用于第一级目录;即。这与example.com/index/some/other/stuff
不匹配 - 没有重定向。
答案 1 :(得分:0)
如果确实想将请求重定向到/index.php
到/index/
,请尝试以下规则:
RewriteCond %{THE_REQUEST} ^[A-Z]+\ (/[^?\ ]+)\.php[?\ ]
RewriteRule .+\.php$ %1/ [L,R=301]
另一方面:
RewriteRule (.+)/$ $1.php [L]
您也可以同时使用这两个规则来解决此问题:
/index.php
的请求将被外部重定向到/index/
/index/
的请求将被内部重写为/index.php