2
301リダイレクトと競合する自家製URL短縮リダイレクト
元々はクラシック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リダイレクトを行うように、追跡スクリプトを変更する必要がありますか?