Назад | Перейти на главную страницу

Лучший способ перенаправить страницы на веб-сервере apache / centos

У меня есть веб-сервер 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.