2010-07-17 40 views
1

我想在我的網站上使用的個人資料網址的網頁,如xyz.com/username漂亮的個人資料網址,而不會

衝突我使用的後續代碼:

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=profile&u=$1 [L,QSA] 

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=profile&u=$1 [L,QSA] 

我的問題是... 我該如何使用它,並保持訪問其他鏈接,如xyz.com/forums,xyz.com/friends等。

謝謝。

+0

可能重複的[國防部重寫和靜態網頁](http://stackoverflow.com/questions/3250769/mod-rewrite-and-static-pages) – 2010-07-17 21:27:11

回答

0

使用該/ adsfasdfasdf而不是/東西:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA] 

它檢查請求的文件是否是一個目錄或文件,如果沒有將它傳遞給index.php

您也可以在/之後放置一個?以使其可選(組合您的兩個規則)。

1

您可以嘗試使用一個條件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA] 

-f和-d是「是一個文件」和「是目錄」分別標誌。 !否定這一點。您的重寫應該只發生在您的網站根目錄中實際不存在的網址上。你可能會想添加一個初始條件來匹配你的用戶名格式,所以你不會踩踏每個潛在的404錯誤。

你可以在前面加上以下,太:

RewriteCond %{REQUEST_URI} ^/[a-zA-Z0-9_-]+/?$ 

所以你只能匹配/是/不/存在

+0

+1,但可能更詳細地解釋一下--f和-d做? – 2010-07-17 21:16:02