1

私の.htaccessファイルには、書き換え URL と HTTP 応答ステータス コード 301 URL リダイレクトが含まれています。リダイレクトをテストすると、古い URL のクエリ文字列値がリダイレクトされた URL の末尾に追加されます。どうすればこれを止めることができますか?

私のhtaccessはこんな感じです。

Options +FollowSymlinks
Redirect 301 /old-site/tees~1-c/blue~123-p.html test.mydomain.com/tees~1-c/blue~123-p.html
Redirect 301 /old-site/tees~1-c.html test.mydomain.com/tees~1-c.html
Redirect 301 /old-site/content/about.html test.mydomain.com/content/about.html

RewriteEngine on
RewriteRule ^(.+)~(.+)-c/(.+)~(.+)-p\.html?$ product.php?cde=$1&cid=$2&pde=$3&pid=$4 [QSA]

RewriteRule ^(.+)~(.+)-c\.html?$ category.php?cde=$1&cid=$2&ref=%3&srt=%4&sta=%5&ppa=%6 [QSA]

RewriteRule ^content/(.+)\.html?$ info.php?seo=$1&sta=%1 [QSA]
4

1 に答える 1

1

mod_alias docで述べたように

クライアントがhttp://example.com/service/foo.txtを要求すると、代わりにhttp://foo2.example.com/service/foo.txtにアクセスするように指示されます。これには、 http://example.com/service/foo.pl?q=23&a=42などの GET パラメータを含むリクエストが含まれ 、 http://foo2.example.com/service/foo.pl?にリダイレクトされ ます。 q=23&a=42

Redirect 301を Rewrite ルールに変更できます。

それ以外の:

Redirect 301 /old-site/tees~1-c/blue~123-p.html test.mydomain.com/tees~1-c/blue~123-p.html
Redirect 301 /old-site/tees~1-c.html test.mydomain.com/tees~1-c.html
Redirect 301 /old-site/content/about.html test.mydomain.com/content/about.html

使用する:

RewriteRule /old-site/tees~1-c.html test.mydomain.com/tees~1-c.html [L,R=301]
RewriteRule /old-site/tees~1-c.html test.mydomain.com/tees~1-c.html [L,R=301]
RewriteRule /old-site/content/about.html test.mydomain.com/content/about.html [L,R=301]

QSA フラグを含めない場合、書き換えられた URL にクエリ パラメータは追加されません。

于 2013-08-22T20:54:29.240 に答える