2013-01-15 194 views
1

奇怪問題的位,但我希望在我的所有URL上設置查詢字符串。如果參數未設置(或爲空),那麼我想重定向以包含默認值。.htaccess中的默認查詢字符串

例如:

example.com would need to requrect to example.com?param=a 

example.com?param would also need to redirect to example.com?param=a 

如果參數是設定,已知值的列表的一部分,那麼它應該進行正常:

example.com?param=(a|b|c|d) would go to the respective page a,b,c or d 

該網站使用的部分頁面其他參數進行排序和分頁,所以規則不能認爲這是唯一的查詢字符串。

我已經試過幾件事情,但一直得到堅持重定向循環。這是試圖設置默認PARAM:

RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&) 
RewriteRule ^(.*)$ /index.php?rq=$1&param=a [L,QSA] 

主要CMS重寫規則是:

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico) 
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA] 

任何幫助將是巨大的!

回答

1
RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&) 
RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico) 
RewriteRule ^(.*)$ $1?%{QUERY_STRING}&param=a [L] 

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico) 
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA] 
+0

謝謝,這是幾乎沒有。我不得不改變的第一條規則讀 重寫規則^(。*)$ /index.php?rq=$1&%{QUERY_STRING}¶m=a [L] 如果未設置帕拉姆,我需要它來追加該到地址欄中的網址。這可能嗎? –

+0

將[L]更改爲[L,R = 301](在測試過程中使用302)。 – Gerben

+0

謝謝,這是添加參數,但我需要隱藏?rq =部分。基本上,我希望它重寫URL,但只是追加?/&param =部分。這甚至有可能嗎? –