2010-01-21 65 views
1

FTR,我很厌恶重写规则。重写规则重定向第二个子文件夹变量的页面

我们有许多用户,每个用户都有自己的项目。现在我们已经设置了RewriteRules,这样当有人只输入mysite.com/username时,它会转到用户的配置文件at,fe,mysite.com/work/user_name.php?u=000

但是,我们真的需要的是,当有人输入mysite.com/username/project1时,它会转到该项目。 (我们不需要对用户做任何事情,真的,我们只需要找到这个项目,但是为了seo /健全目的,用户名必须在那里)我已经尝试完成这个为期两天了,无论我做什么,似乎都无法得到500错误,而我根本没有足够的才能弄清楚。

我最初试图用第二个变量($ 2)重定向到用户页面,如果那个var在那里,做一个php头到适当的页面,但这似乎并没有工作,它仍然显示URL如mysite.com/work/project_page?i=999或其他,这也是不好的。

下面的代码Ive得到重定向到用户

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

但我似乎无法弄清楚如何告诉它,如果有2个瓦尔(即用户/项目),然后重定向到工作/project_page.php?n=$2 ...

回答

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] 
+0

Gumbo,你是一个绝对的怪物!在我完成问题之前,你几乎可以回答这个问题! – Cyprus106 2010-01-21 16:50:36