2

元の URL 1 - www.mysite.com/gallery-category.php?gallname=garments&GalleryID=10
SEF URL 1 - http://www.mysite.com/photos-garments~10.html

元の URL 2 - www.mysite.com/gallery-category.php?gallname=furniture&GalleryID=20
SEF URL 2 - http://www.mysite.com/photos-furniture~20.html

元の URL 3 - www.mysite.com/gallery-category.php?gallname=plastics&GalleryID=30
SEF URL 3 - http://www.mysite.com/photos-plastics~30.html

この SEF URL を取得するために、RewriteRule を .htaccess に次のように記述しました。

RewriteRule ^photos-(.+)~(.+).html gallery-catagory.php?gallname=$1&GalleryID=$2&%{QUERY_STRING} [nc]

しかし今、特定の 1 つの URL のみをリダイレクトして、別のページにリダイレクトしたいと考えています。

つまり、http://www.mysite.com/photos-plastics~30.html のみがhttp://www.mysite.com/plasticphotos.htmlリダイレクトされ、他の 2 つの元の URL は同じページになります。

リダイレクト URL の下で試してみましたが、動作していますが、ブラウザのクエリ文字列でリダイレクトされます - http://www.mysite.com/plasticphotos.html?gallname=plastics&GalleryID=30

リダイレクト URL

Redirect /photos-plastics~30.html http://www.mysite.com/plasticphotos.html

出力 URL は次のようになります - http://www.mysite.com/plasticphotos.html

これを修正するのを手伝ってください。

ありがとう。

4

2 に答える 2

0

リダイレクトは、クエリ文字列を自動的に追加します。クエリ文字列が必要ない場合は、次の RewriteRule を試してください。

RewriteRule photos-plastics~30.html http://www.mysite.com/plasticphotos.html ? [大]

于 2012-12-19T20:50:25.637 に答える
0

に書き換える mod_rewrite ルールが^photos-(.+)~(.+).htmlありgallery-catagory.php?gallname=$1&GalleryID=$2 photos-plastics~30.htmlにリダイレクトするmod_alias ディレクティブがあるため、これが発生しているよう/plasticphotos.htmlです。クエリ文字列は *mod_rewrite ルールによって追加されている* ため、これはクエリ文字列の問題ではありません。これは、mod_rewrite および mod_alias ディレクティブが、URL ファイル マッピング処理パイプラインのさまざまな部分で同じ URI に適用されているためです。つまり、書き換えルールが URI をマングリングし、リダイレクト ディレクティングがリダイレクトのフラグを立てるため、両方のディレクティブを持つフランケンシュタイン URI になります。

mod_rewrite と mod_alias を混在させるときは常に、それらが互いに干渉しないようにする必要があります。両方のモジュールは、処理パイプラインの異なるポイントで適用されます。それらが互いに台無しにならないようにするために、mod_rewrite をそのまま使用してください。これは、すでに内部の書き換えに使用しているためです。このルールを現在のルールの上に追加します。

RewriteRule ^photos-plastics~30.html$ /plasticphotos.html [L,R=301]
于 2012-12-19T21:46:48.400 に答える