301リダイレクトと競合する自家製URL短縮リダイレクト


11

元々はクラシックASPを使用して構築されたWebサイトがあります。1年ほど前にPHPで書き直されました。これによりファイル拡張子が変更され、一部のページがWebサイト内の新しい場所に移動されました。当然、ユーザーと検索エンジンが新しい場所を見つけることができるように、古いURLから新しいURLへの301リダイレクトを行いました。これは正常に動作します。

また、サイト所有者が独自の小さなURLを作成し、URLに含まれているGoogleアナリティクスキャンペーントラッキング変数を使用してページにリダイレクトできるツールを作成して、キャンペーンを追跡し、そのパフォーマンスを確認できるようにしました。

私が抱えている問題は、キャンペーントラッキングルールが301リダイレクトと競合し、リダイレクトがまったく機能しないことです。

キャンペーントラッキングコードは次のとおりです。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

ご覧のとおり、ファイルが存在するかどうかを確認し、存在しない場合は、トラッキングスクリプト(tracking.php)にリダイレクトします。トラッキングスクリプトは、トラッキングコードを取得し、クエリのGoogle Analyticsキャンペーンコードを使用して適切なURLにリダイレクトします。ストリング。

このコードにより、次のようなルールが失敗します。

redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php

これは、「ファイルが見つからない場合、tracking.phpにリダイレクトする」という追跡ルールにあるように、連動しないことは理にかなっています。必要なのは、301リダイレクトを最初に実行し、どれも一致しない場合は、トラッキングスクリプトにリダイレクトすることです。追跡ルールを301リダイレクトの下に配置しても、結果は変わりません。

これは.htaccess経由で実行できますか?または、キャンペーンが見つからない場合に、キャンペーンIDが実際にリダイレクトする必要がある古いページであるかどうかを確認し、そこから301リダイレクトを行うように、追跡スクリプトを変更する必要がありますか?

回答:


5

mod_aliasリダイレクトをmod_rewriteディレクティブに変換してみてください。


編集:以下の例では、同じパスにある古いASPファイルをPHPファイルに置き換えたと想定しています。

RewriteEngine on

# *.asp -> *.php
RewriteRule (.*)\.asp$ /$1.php [R=301,L]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

...または、正規表現変数をスキップして、古いURIごとに明示的なリダイレクトを設定できます。

RewriteRule about\.asp$ /about.php [R=301,L]
RewriteRule capabilities\.asp$ /capabilities.php [R=301,L]
RewriteRule capacitors\.asp$ /capacitors.php [R=301,L]

編集#2:発生するほとんどの状況をカバーする例を次に示します。

RewriteEngine on

# Changes to path + Query String Append
RewriteRule ^/path/to/old\.asp$ /path/to/new/about.php [R=301,L,QSA]

# *.asp -> *.php + Query String Append
RewriteRule ^(.*)\.asp$ $1.php [R=301,L,QSA]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

どういう意味かわかりません。私が私の質問で示したことに基づいて例を挙げていただけますか?
ジョンコンデ

編集ありがとうございます。今は理にかなっています。私の最後の問題は、パスが変更されたファイルをどうするかでしょうか?それは可能ですか?それとも私はあまりにも多くを求めていますか?
ジョンコンデ

これらのファイルに明示的なリダイレクトを設定できます(ほとんどのパスが変更されている場合は、すべてのファイルに明示的なリダイレクトを使用して、構成を維持できるようにすることもできます)。
danlefree 2011年

[R=301,L]各リダイレクトの後にがないことが問題の原因だと思います。試してみましょう。何が起こるかをお知らせします。
ジョンコンデ

*.asp -> *.phpワイルドカードは、素晴らしい作品。直接の遷移ではなく、クエリ文字列を含むページの個々のルールは厄介です。しかし、これは正しい方法のようです。その部分を整理できない場合は、新しい質問を開始します。
ジョンコンデ

-1

リダイレクトを元に戻し、元のままにしておきます。新しいサイトを古いサイトにリダイレクトします。あなたの古いサイトはおそらくバックリンク、ウェブサイトの時代、そしてSEOの恩恵を受けています。低いページランクの新しいサイトに置き換えるだけでそれを失うのは残念です。Googleはリダイレクトを罰します。新しいサイトにはまだSEOがないため、そのサイトではリダイレクトを使用することをお勧めします:)


退行は良い解決策ではないと思います。元のサイトは、ほぼすべての点で不十分でした。私たちはサイトをより速く、より使いやすく、アクセスしやすく、整理し、そして保守しやすくしました。それはニッチなサイトであり、最初はいくつかのリンクがあり、ほとんどがリダイレクトを必要としないホームページに移動したため、リダイレクトから何も失うことはありません。したがって、何も得られず、多くを失うので、絶対に古いサイトに戻りたくありません。
ジョンコンデ

ちなみに、Googleはリダイレクトを罰しません。リダイレクトの唯一の問題は、連鎖が深すぎる場合、追跡を停止し、301を実行すると一部のPRが失われることですが、その量は取るに足らないものであり、まったく実行しない他の方法に比べて価値があります。
ジョンコンデ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.