Это может пригодиться во многих ситуациях. Например - вы меняете домен для сайта, адрес меняется, весь контент, все URL остаются прежними.
Вопросов два -
1. как перенаправить посетителей на соответствующие страницы нового сайта? Без необходимости ручного прописывания редиректа ДЛЯ КАЖДОЙ страницы.
2. как исключить файл или файлы определенного типа из редиректа.
Решение:
RewriteEngine on
RewriteRule !\.(html|txt)$ http://newsite.com%{REQUEST_URI} [L,R=301]
Это правило, помещенное в .htaccess будет перенаправлять посетителя на запрашиваемую страницу, но уже на новом домене, при этом исключая файлы с расширением TXT и HTML из редиректа. То есть при обращении к этим файлам на старом домене - редиректа не произойдет и они откроются. Это может быть необходимо - например, для верификации домена в панелях Гугл и Яндекс вебмастера.
А вот правило проще - оно исключает из редиректа только robots.txt:
RewriteEngine on
RewriteRule !^robots\.txt$ http://newsite.com%{REQUEST_URI} [L,R=301]
Есть еще один вариант правила, которое работает точно так же:
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
RewriteEngine on
RewriteRule (.*) http://newsite.com/$1 [R=301,L]
Важно! Почему приведенные правила могут сразу не сработать:
1. если домен подключен к Cloudflare, то вы можете видеть закешированные значения. Решение - включить в панели "режим разработки" - "Development Mode".
2. если вы не прописали "RewriteEngine on" или же у вас уже есть такая строчка в файле .htaccess - тогда нужно добавить правило в то место, где строка есть. То есть не должно быть нескольких повторений этой строки в одном файле.
3. если правила изменены, то редиректа не будет или возникнет ошибка - тогда смотрите логи сервера, там будет указана причина.
4. браузеры могут так же кешировать значения редиректа - если браузер запомнил, что на странице есть редирект, то он может и дальше его делать, несмотря на то, что правила в .htaccess уже нет. Решение - использовать второй браузер, и проводить тестирование на двух-трех браузерах.
Добавить комментарий