带有子目录的子域上的htaccess mod_rewrite

时间:2012-10-26 01:44:39

标签: php .htaccess url mod-rewrite

我知道本网站上有关于此主题的 TONS 问题,以及围绕谷歌的 TONS 教程。但是我现在已经搜索了一段时间,我似乎无法找到解释我具体情况的那个。

我正在构建一个社交应用程序,其中整个应用程序存储在网站的子域目录中,如下所示: subdomain.example.com/network / < - network is the所有应用程序文件的目录。

我的.htaccess文件位于子域的根目录中,从现在开始,我将它从所有文件中删除.php,它在整个项目中应该正常工作。我有一个user.php页面,每个用户的个人资料都是基于此页面,每个用户的唯一标识符是他们的用户名(不像大多数人使用的那样'id'。)所以现在网址看起来像 / network / user。 php?username = TylerB ,这不是很漂亮。我尝试了许多不同的东西,让它看起来像 / network / user / TylerB ,但我尝试的任何东西似乎都没有用。我不知道是不是因为它在目录,子域或什么。截至目前,当我有 / network / user / TylerB (TylerB是我的用户名)时,它给我一个404错误。

这是我当前的.htaccess文件:

RewriteEngine On
RewriteRule ^user/([^/\.]+)/?$ user.php?username=$1 [L]
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]

1 个答案:

答案 0 :(得分:1)

我建议设置RewriteBase指令并匹配完整模式,确保重写到/network/目录。

RewriteEngine On
RewriteBase /
RewriteRule ^network/user/([^/\.]+)/? /network/user.php?username=$1 [L]
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]

使用http://htaccess.madewithlove.be/处的测试工具,我得到了输出:

This rule was met, the new url is http://example.com/network/user.php?username=name
The tests are stopped because the L in your RewriteRule options