元々はクラシック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リダイレクトを行うように、追跡スクリプトを変更する必要がありますか?