使用htaccess删除.php并允许路径

时间:2012-08-31 19:12:08

标签: php apache .htaccess

我目前有一个.htaccess文件,允许人们输入不带php扩展名的URL,以便http://domain.com/account重定向到account.php

我希望能够拥有它,以便如果我输入http://domain.com/account/contactinfo(或http://domain.com/account/settings/groups等等),它仍会转到account.php,但我不知道如何更改内容我必须做到这一点。

当前.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(([A-Za-z0-9\-_\.]+/)*[A-Za-z0-9\-_\.]+)?$ $1.php

任何帮助表示赞赏!显然,如果存在一个文件夹,它应该遵循该路径(例如,如果存在/folder/page.php,那么http://domain.com/folder/page/create将转到文件夹/ p​​age.php)

1 个答案:

答案 0 :(得分:1)

试试这是您不需要将任何URI信息传递到查询字符串中(即您的应用仍会查看$_SERVER['REQUEST_URI']

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9\-_\.]+)(/[A-Za-z0-9\-_\.]*)?$ $1.php&q=$2 [QSA]
# Note the optional '&q=$2' on line above if you want to make removed part of URI available as passed parameter

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ / [L,QSA]

请注意,由于我删除了检查有效php文件的条件,因此如果重写的请求未指向有效的PHP文件,我会添加第二个条件重写规则以重定向到站点根目录。您显然可以将其重定向到404页面或您可能想要重定向到的任何其他内容。或者你可以完全删除它,让Apache给它默认的404响应。