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


Using htaccess to remove .php and allow path

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

我希望能够拥有它,这样如果我进入http://domain.com/account/contactinfo(或http://domain.com/account/settings/groups等等)它仍然会转到account.php,但我不确定如何改变我必须实现的目标。

Current.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将转到文件夹/page.php)

尝试这样做是因为您不需要将任何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响应。