2016-08-19 27 views
1

我有這樣的重寫二重寫並不會執行

RewriteCond %{THE_REQUEST} /(?:user_profile)?\?user_id=([^\s&]+)\sHTTP [NC] 
RewriteRule^/%1? [L,R] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /user_profile?user_id=$1 [L] 

其正確讓我使用域/用戶名作爲URL。

但是當我添加一個類似的重寫規則時,第二個不喜歡上面那個。

RewriteCond %{THE_REQUEST} /(?:group)?\?group_id=([^\s&]+)\sHTTP [NC] 
RewriteRule^/%1? [L,R] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^group/([^/]+)/?$ /group?group_id=$1 [L] 

誰能幫我rewite第二個它返回這樣的域/組/組名,同時保持第一個工作像域/用戶名。

回答

0

你有兩個問題。第一個問題是,當您重定向請求時,您希望保留前綴group/

RewriteCond %{THE_REQUEST} /(?:group)?\?group_id=([^\s&]+)\sHTTP [NC] 
RewriteRule^/group/%1? [L,R] 

的第二個問題是,第一改寫傳球后,你重寫/group/groupname/group?group_id=groupname。這將使/group與用戶名規則相匹配。你想防止這個前綴匹配:

RewriteCond %{REQUEST_URI} !^/group 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /user_profile?user_id=$1 [L]