2010-01-21 31 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