У меня есть сайт, который был изначально построен с использованием классического 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
Имеет смысл, что это не работает вместе, как говорят правила отслеживания, «если файл не найден, перенаправьте на tracking.php». Мне нужно, чтобы перенаправления 301 запускались первыми, а если ни один из них не совпадает, то перенаправляют на скрипт отслеживания. Размещение правил отслеживания под перенаправлениями 301 не меняет результаты.
Это можно сделать через .htaccess? Или мне нужно будет изменить скрипт отслеживания, чтобы, если кампания не была найдена, она проверяла, является ли идентификатор кампании действительно старой страницей, которую необходимо перенаправить, и затем выполняет перенаправление 301 оттуда?