如何从URL中删除.php扩展名?

时间:2010-01-24 12:53:37

标签: mod-rewrite

如何使用mod_rewrite从URL删除.php扩展名?

例如:

test.com/index.php -> test.com/index/
test.com/contact.php -> test.com/contact/

2 个答案:

答案 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