2011-02-15 178 views
0

到domain.com/username重定向到以下地址htaccess的雙重寫規則

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ publicprofile.php?username=$1&%{QUERY_STRING} 

我開發一個移動網站,因此我需要移動用戶重定向到移動網站。

這是我的代碼中發現了移動重定向

RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 

如何使兩者同時工作嗎?

回答

0

把第二塊放在第一塊之前,你應該很好走。

如果需要,第二個塊會執行頭重定向,這將導致發生新的請求。之後,內部重寫規則輪到了。

0

允許我優化您的規則:

RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} (iphone|blackberry|palm|android) [NC] 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301,L] 

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

[NC]代表 '不區分大小寫'。 [QSA]是追加查詢字符串。 您可以在mod_rewrite tester測試您的規則。

+0

我的語法可能有點超臨界,但`[NC]`代表`沒有案例`,不區分大小寫。它們是同義詞,但是在展開_acronym_時,通常希望精確地展示_acronym_每個字符所代表的字符的好處。 – chown 2011-09-09 05:58:17