簡體   English   中英

htaccess重寫單個查詢字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM