1

我目前有一个 .htaccess 文件,允许人们在没有 php 扩展名的情况下输入 URL,例如http://domain.com/account重定向到 account.php

我希望能够拥有它,这样如果我输入http://domain.com/account/contactinfo(或http://domain.com/account/settings/groups等),它仍然会进入帐户。 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将转到文件夹/page.php)

4

1 回答 1

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 响应。

于 2012-08-31T19:24:14.747 回答