1

最近、クライアントのWebサイトを再構築しました。彼らは、Googleがいくつかの古いリンクをリストしていることを発見しました。これらのリンクをホームページだけにリダイレクトしようとしています。

http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ

.htaccessファイルを使用して、これら2つのリダイレクトを正しく機能させるためのいくつかの方法を試しました。

方法#1

redirect 301 http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/
redirect 301 http://www.joiningtech.com/index.html?GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ http://www.joiningtech.com/

方法#2

RewriteCond %{QUERY_STRING} ^([^&]&)*GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA(&|$)
RewriteRule ^/index\.php$ http://www.joiningtech.com/? [L,R=301]
RewriteCond %{QUERY_STRING} ^([^&]&)*GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ(&|$)
RewriteRule ^/index\.php$ http://www.joiningtech.com/? [L,R=301]

私はこれらのメソッドをstackoverflowの他の場所で見つけました。何か問題があったのではないかと思いますので、よろしくお願いします。

ありがとう、クリス

4

2 に答える 2

1

辞書式の比較を使用します。必要のない場合は、正規表現よりもはるかに明確です。

RewriteEngine On
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ
RewriteRule ^index.html$ http://www.joiningtech.com/? [L,R=301]

最初の引数としてfullを指定したため、最初のメソッド(を使用Redirect)は機能しませんが、のパス名部分URLのみが必要です。以下も同様に機能します。URL

redirect 301 /index.html?GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA http://www.joiningtech.com/
redirect 301 /index.html?GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ http://www.joiningtech.com/

を使用してそれを行う3番目の方法mod_rewriteは次のとおりです。

RewriteEngine On
RewriteCond %{REQUEST_URI} =/index.html [NC]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ
RewriteRule .* http://www.joiningtech.com/? [L,R=301]
于 2012-12-07T21:58:04.203 に答える
0

OK、カミルの助けといくつかの試行錯誤のおかげで、私は答えを見つけました。このサイトはWordPressサイトです。.htaccessファイルの順序は次のとおりです。

# suExec for PHP
Action application/x-pair-sphp /cgi-bin/php5.cgi
AddType application/x-pair-sphp .php
#Video MIME Types:
AddType video/m4v .m4v
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /directory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

</IfModule>
redirect 301 /pages/laser.html http://www.joiningtech.com/pages/welding.html
redirect 301 /index_nosound.html http://www.joiningtech.com/
RewriteEngine On
RewriteCond %{REQUEST_URI} =/index.html [NC]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ
RewriteRule .* http://www.joiningtech.com/? [L,R=301]

WordPressの書き換えコードとそれ以降のコードが競合していたと思います。そこで、WordPressの書き換えコードを新しいリダイレクトの下に並べ替えました。

# suExec for PHP
Action application/x-pair-sphp /cgi-bin/php5.cgi
AddType application/x-pair-sphp .php
#Video MIME Types:
AddType video/m4v .m4v
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

</IfModule>
redirect 301 /pages/laser.html http://www.joiningtech.com/pages/welding.html
redirect 301 /index_nosound.html http://www.joiningtech.com/
RewriteEngine On
RewriteCond %{REQUEST_URI} =/index.html [NC]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CNbT06iehLQCFQWe4AodejAAkA [OR]
RewriteCond %{QUERY_STRING} =GAW+CAM2&gclid=CMncjs-ehLQCFdKd4Aod52AAAQ
RewriteRule .* http://www.joiningtech.com/? [L,R=301]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /directory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

これで動作します。「RewriteEngineOn」のインスタンスを2つ使用しても問題がないかどうかを知る必要があります。

于 2012-12-10T22:34:23.310 に答える