RewriteRule重定向tp页面以获取第二个子文件夹变量

时间:2010-01-21 16:02:51

标签: .htaccess mod-rewrite url-routing

FTR,我在重写规则方面非常糟糕。

我们有很多用户都有自己的项目。现在我们已经设置了RewriteRules,以便当有人输入mysite.com/username时,它会转到用户的个人资料,例如,mysite.com / work / user_name.php?u = 1000

但我们真正需要的是,当某人输入mysite.com/username/project1时,它会进入该项目。 (我们不需要对用户做任何事情,真的。我们只需要找到项目。但是用户名需要在那里进行seo / sanity目的)我已经尝试了两天了,我已经无论我做什么,似乎都无法获得500个错误,而且我根本没有足够的天赋来弄明白。

我最初尝试使用第二个变量($ 2)重定向到用户页面,如果那个var在那里,请执行相应页面的php标头,但这似乎不起作用,它仍然显示URL为mysite.com/work/project_page?i=999或其他什么,这也不好。

这是我用于重定向到用户的代码

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /work/user_page.php?n=$1 [L,QSA]

但我似乎无法弄明白如何告诉它如果有2个vars,(即用户/项目)然后重定向到work / project_page.php?n = $ 2 ...

1 个答案:

答案 0 :(得分:2)

您需要使用更具体的模式,例如[^/]+(除/之外的一个或多个任意字符)而不是.*(任意数字的任意字符)。这使您可以区分一个或多个路径段:

# one path segment
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /work/user_page.php?n=$1 [L,QSA]
# two path segments
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ /work/user_page.php?n=$1&project=$2 [L,QSA]