У мене є веб-сайт, який спочатку був створений за допомогою класичного ASP. Близько року тому його переписали на PHP. Це призвело до зміни розширень файлів, і деякі сторінки були переміщені в нові місця на веб-сайті. Зазвичай ми зробили 301 переадресацію зі старих URL-адрес на нові URL-адреси, щоб їх користувачі та пошукові системи могли знайти свої нові місця. Це чудово працює.
Ми також створили для них інструмент, який дозволяє власнику сайту створювати власні крихітні URL-адреси, які переспрямують на сторінку із змінними для відстеження кампанії Google Analytics, включеними в URL-адресу, щоб вони могли відстежувати кампанію та бачити, як вона працює.
У мене виникла проблема - правила відстеження кампанії суперечать переспрямуванням 301 і перешкоджають роботі переспрямувань взагалі.
Ось код відстеження кампанії:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Як ви бачите, він перевіряє, чи існує файл, і чи не він перенаправляє на сценарій відстеження (tracking.php), який потім бере код відстеження і перенаправляє на відповідну URL-адресу з кодом кампанії Google Analytics у запиті. рядок.
Цей код спричиняє збій таких правил:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Це має сенс, що це не працює разом, як кажуть правила відстеження, "якщо файл не знайдено, перенаправлення на track.php". Мені потрібно, щоб перенаправлення 301 було запущено спочатку, і якщо жодне з них не відповідає, то перенаправлення на сценарій відстеження. Якщо розмістити правила відстеження під перенаправленнями 301, результати не змінюються.
Це можна зробити через .htaccess? Або мені потрібно буде змінити сценарій відстеження, щоб, якщо кампанії не було знайдено, вона перевіряє, чи дійсно ідентифікатор кампанії - стара сторінка, яку потрібно переспрямувати, а потім зробити переспрямування 301 звідти?