[英]Htaccess Rewrite single query string
我有一個比較老的siye的問題。 我有一些帶有查詢字符串的通用URL,我想進行301重定向,但是我不想覆蓋所有重定向的URL。 我想選擇每個查詢字符串被重定向到的位置,因為站點內有很多不同的類別。 例如:
我想改變:
index.php?_a=viewCat&catId=199
至:
/garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html
但是我想將另一個catid更改為我選擇的另一個URL,完全不同的結構。 如果沒有,我遇到的問題就是我擁有的代碼? 在目標網址的末尾,它可以工作,但是將查詢字符串附加到末尾,如果我將其放在末尾,則根本不會重定向。
我正在使用的代碼:
RewriteCond %{QUERY_STRING} ^_a=viewCat&catId=199
RewriteRule ^index\.php$ /garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html? [L,R=301]
任何幫助,將不勝感激!
編輯:我的htaccess的其余部分
RewriteEngine On
RewriteRule ^conservatory/(.*)$ /conservatory-furniture/$1 [R=301,L]
RewriteRule ^dining-room/(.*)$ /dining-room-furniture/$1 [R=301,L]
RewriteRule ^garden/(.*)$ /garden-furniture/patio-furniture/$1 [R=301,L]
RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule cat_([0-9]+)(\.[a-z]{3,4})?(.*)$ index.php?_a=viewCat&catId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule prod_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=viewProd&productId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule info_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=viewDoc&docId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule tell_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=tellafriend&productId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule _saleItems(\.[a-z]+)?(\?.*)?$ index.php?_a=viewCat&catId=saleItems&%1 [NC,L]
如果這些是完整的URL,則可以將模式錨定在字符串的開頭
RewriteRule ^cat_([0-9]+)(\.[a-z]{3,4})?(.*)$ index.php?_a=viewCat&catId=$1&%1 [NC]
這樣可以防止將其中包含cat_
的URL重寫為index.php?...
而且由於您不使用尾隨的可選部分,因此您也可以消除這一點
RewriteRule ^cat_([0-9]+) index.php?_a=viewCat&catId=$1&%1 [NC]
另一點是帶有查詢字符串的RewriteCond
。 如果查詢字符串是可選的,則可以刪除RewriteCond
並將RewriteRule
修改為
RewriteRule ^cat_([0-9]+) index.php?_a=viewCat&catId=$1 [QSA,NC]
因此,所有這些將變成
RewriteRule ^cat_([0-9]+) index.php?_a=viewCat&catId=$1 [QSA,NC]
RewriteRule ^prod_([0-9]+) index.php?_a=viewProd&productId=$1 [QSA,NC]
RewriteRule ^info_([0-9]+) index.php?_a=viewDoc&docId=$1 [QSA,NC]
RewriteRule ^tell_([0-9]+) index.php?_a=tellafriend&productId=$1 [QSA,NC]
RewriteRule ^_saleItems index.php?_a=viewCat&catId=saleItems [QSA,NC,L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.