Перенаправить каждую страницу старого домена на URL той же страницы в новом домене - PullRequest
0 голосов
/ 17 апреля 2019

Я знаю, что этот вопрос задавался во всех вариациях, но я все еще не могу найти точный ответ. Я изменил свое доменное имя. Все файлы сайта и URL-адреса остаются прежними. старый домен по-прежнему указывает на тот же сервер, и у меня есть следующий код в файле htaccess.

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
 RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
 RewriteRule ^(.*)$ "https\:\/\/www\.newdomain\.com\/$1" [R=301,L]

Проблема в том, что это перенаправляет только домашнюю страницу старого домена. Что я могу сделать, поэтому мне не нужно добавлять отдельные перенаправления для каждой страницы.

1 Ответ

0 голосов
/ 26 апреля 2019

Похоже, вы поместили эти директивы не в том месте в вашем файле .htaccess.Они должны идти в начале файла, а не в конце.

Эти директивы выглядят типично для перенаправлений, генерируемых cPanel.cPanel всегда помещает перенаправления в конец файла .htaccess (что часто неверно).

Если у вас есть фронт-контроллер до этого (например, используемый в WordPress), то вы обнаружите, что эти директивыбудет обрабатываться только для запросов к корню документа (т. е. на «домашнюю страницу»), поскольку все остальные запросы будут остановлены фронт-контроллером.

Эти директивы также могут быть упрощены:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule (.*) https://www.newdomain.com/$1 [R=301,L]

Я удалил $ с конца CondPattern , чтобы он соответствовал полному доменному имени (оканчивающемуся точкой).

Нет также необходимостиобратная косая черта экранирует двоеточия, косые черты и точки в подстановке RewriteRule , поскольку эти символы здесь не несут особого значения (это не регулярное выражение).(Это ненужное экранирование очень типично для cPanel.)

...