2014-03-02 40 views
0

我敢肯定這個問題已經回答過,但我不知道如何搜索答案,因爲谷歌搜索是泛泛的mod_rewrite url造型問題。mod_rewrite添加一個PHP參數到基址url

我有對重定向非www查詢到WWW

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] 

該網站的結構爲兩個主要頁面的單頁的應用程序和網站顯示HTML下列標準規則.htaccess文件基於url參數。比方說,第一頁是蘋果,第二頁是梨。我想這樣做,如果用戶搜索website.com,那麼第一個規則將被調用,它將重定向到www.website.com。然後,我想讓它添加一個參數,使其成爲www.website.com/?p=apples,因爲原始搜索中不包含?p = apples或?p = pear。

我嘗試了幾個解決方案,但他們都似乎導致重定向循環。這意外導致重定向循環,例如:

RewriteCond %{THE_REQUEST} !^.*\?p=apples.*$ 
RewriteCond %{THE_REQUEST} !^.*\?p=pears.*$ 
RewriteRule .* http://www.website.com/?p=apples [R] # also how can this be generalized so it's not domain name specific 
+0

您是否在將該緩存添加到.htaccess後清除了緩存?你有任何其他目錄中的.htaccess嗎? – Prix

回答

0

看看這是你在找什麼。如果您嘗試將它合併爲重定向到www,並且如果查詢字符串爲空,則重定向到?p=apples,那麼此代碼應該適用於您。

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{QUERY_STRING} !p=(.+)$ [NC] 
RewriteRule ^$ http://www.%{HTTP_HOST}/?p=apples [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L,QSA] 
+0

感謝工作像一個魅力 – user3015797