У меня есть сайт, который был изначально построен с использованием классического 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 оттуда?
[R=301,L]
каждого после перенаправления является причиной моей проблемы. Дайте мне попробовать, и я дам вам знать, что происходит.*.asp -> *.php
Подстановочные отлично работает. Отдельные правила для страниц, которые не являются прямым переходом и имеют строки запроса, вызывают проблемы. Но это похоже на правильный путь. Если я не смогу разобраться с этой частью, я начну новый вопрос об этом.Я бы изменил перенаправление и оставил бы его, как это было изначально. Перенаправьте ваш новый сайт на ваш старый сайт. Ваш старый сайт, вероятно, уже извлекает выгоду из обратных ссылок, возраста веб-сайта и SEO. Было бы стыдно потерять это, просто заменив его более новым сайтом с более низким рейтингом страницы. Google наказывает перенаправления. На вашем НОВОМ сайте пока не будет SEO, поэтому лучше использовать редирект на него :)
источник