2

かなり古いサイエに問題があります。301 リダイレクトしたいクエリ文字列を含む一般的な URL がいくつかありますが、URL を一括リダイレクトしたくありません。サイト内にはさまざまなカテゴリがたくさんあるため、各クエリ文字列がリダイレクトされる場所を選択したいと考えています。例えば:

変わりたい:

index.php?_a=viewCat&catId=199

に:

/garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html 

しかし、別の catid を、私が選択した別の URL、完全に異なる構造に変更したくありません。私が抱えている問題は、持っていない場合、私が持っているコードにあります。宛先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]
4

1 に答える 1

0

これらが完全な 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]

もう 1 つのポイントはRewriteCondwith クエリ文字列です。クエリ文字列がオプションの場合は、を削除してs を次の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]
于 2013-03-11T16:35:33.963 に答える