1

既存の mod_rewrite クエリをより適切な対応するクエリにリダイレクトしようとしていますが、ページの変数が URL の末尾に追加されるという問題が発生しています。

例えば、

/garden/garden-benches/cat_199.html 

なりつつあります:

/garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html?_a=viewCat&catId=199

最後にこれらの変数が欲しくないだけです。

コードは次のとおりです。

RewriteEngine On
Redirect 301 /garden/garden-benches/cat_199.html http://www.sustainable-furniture.co.uk   /garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html

残りの .htaccess ファイル - 最初に URL を作成します。

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

書き換えとリダイレクトは 2 つの異なるものです。ただし、ルールにフラグを立てることで、書き換えを使用してリダイレクトできます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^garden/garden-benches/cat_199\.html$ garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html [R=301,L]

編集 1 - 条件を削除しましたRewriteCond %{REQUEST_FILENAME} !-f.htmlファイルはファイルであり、ルールによってフィルタリングされないため、おそらくスキップされました。

于 2013-02-22T11:33:11.557 に答える