У меня есть веб-сервер centos 6.5, на котором работают 2 веб-сайта с 1 IP-адреса с использованием виртуальных хостов.
domain1.com и domain2.com - оба размещены на одном и том же веб-сервере, указанном выше.
Мне нужно перенаправить около 40 страниц с domain1 на domain2, «например»:
domain1.com/page1 -> domain2.com/new-page-1
domain1.com/welcomepage -> domain2.com/new-welcome-page
domain1.com/johnsmith -> domain2.com/elvis
domain1.com/test -> domain2.com/production
* Обратите внимание, что страницы, которые я перенаправляю, не имеют одинаковой структуры / имени, они переходят в совершенно другую структуру / имя.
Может ли кто-нибудь подсказать, что мне нужно / нужно сделать для выполнения этой задачи?
РЕДАКТИРОВАТЬ №1. Я пытался сделать это через раздел VirtualHost в моем файле httpd.conf. Смотрите ниже мои записи.
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
RedirectPermanent / http://www.domain2.com/page12345/
</VirtualHost>
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
RedirectPermanent /AboutUs/Founders http://www.domain2.com/about-us-founders/
</VirtualHost>
В двух приведенных выше записях только первая работает правильно и правильно перенаправляет. Второй перенаправляет на: http://www.domain2.com/page12345/AboutUs/Founders Любые идеи?
Самое простое решение, а зачастую и лучшее в таких случаях; добавить 40 Перенаправить директивы в конфигурацию VirtualHost domain1, где единственный выбор, который вам нужно сделать, - это постоянный или временный статус перенаправления:
<VirtualHost *:80>
Servername domain1.com
RedirectTemp /page1 http://domain2.com/new-page-1
RedirectPermanent /welcomepage http://domain2.com/new-welcome-page
</VirtualHost>
В ответ на редактирование №1 выше:
Когда вы используете несколько разделов VirtualHost с одинаковыми доменными именами в ServerName или ServerAlias, действителен только первый, а последующие будут игнорироваться.
Один раздел VirtualHost может содержать несколько директив Redirect, поэтому переместите вторую директиву Redirect в первый раздел virtualhost и удалите вторую.
Второй читая руководство по ссылке выше действительно помогает:
Любой запрос, начинающийся с URL-пути, вернет клиенту запрос перенаправления в расположение целевого URL. Дополнительная информация о пути помимо совпадающего URL-пути будет добавлена к целевому URL-адресу.
Пример:Redirect /service http://foo2.example.com/service
Если клиент запрашивает http://example.com/service/foo.txt, он получит доступ http://foo2.example.com/service/foo.txt
Это точно соответствует тому, что вы наблюдали в своих запросах на www.domain1.com/AboutUs/Founders, которые запускают RedirectPermanent / http://www.domain2.com/page12345/
который перенаправляет исходный запрос на www.domain2.com/page12345/AboutUs/Founders
Вы можете решить эту проблему, правильно расположив строки перенаправления, потому что Apache будет обрабатывать директивы перенаправления по порядку. Начните с самого длинного пути URL, потому что в противном случае они будут пойманы действительным перенаправлением в более короткий каталог.
<VirtualHost *:80>
Servername domain1.com
Redirect /AboutUs/Founders http://www.domain2.com/about-us-founders/
Redirect /AboutUs/ http://www.domain2.com/about-us/
Redirect /index.html http://www.domain2.com/page12345/
RedirectMatch ^ http://www.domain2.com/page12345/
</VirtualHost>
Для запросов перенаправления, состоящих только из http://domain1.com вы используете ^
скорее тогда /
Часто рекомендуется также явно перенаправить IndexDocument, отсюда и запись /index.html.