Apache: Загрузка скрипта на основе имени хоста

Apache: Загрузка скрипта на основе имени хоста

Я не думаю, что это так уж сложно, но мне трудно придумать, как это лучше сделать.

У нас есть сайт site.example.comс 5 страницами под ним. Допустим, эти 5 страниц — site.othersite.com/page1.html, page2.html, page3.html, page4.html, page5.html. Теперь у нас также есть 5 других поддоменов, lp1.OTHERSITE.com, lp2.othersite.com, lp3.othersite.com, lp4.othersite.com, lp5.othersite.com. Все эти домены размещены на одном сервере, в одном корневом каталоге документов. Теперь нам нужно, чтобы Apache сделал прозрачный редирект (то есть адресная строка не меняется) на следующие шаблоны:

lp1.othersite.com --> site.example.com/page1.html
lp2.othersite.com --> site.example.com/page2.html
lp3.othersite.com --> site.example.com/page3.html
lp4.othersite.com --> site.example.com/page4.html
lp5.othersite.com --> site.example.com/page5.html

Возможно ли это с использованием только Apache? Если нет, я уже написал PHP-скрипт для загрузки страниц site.example.com/page*.html в iframe на основе входящего имени хоста, но я не уверен, как сказать Apache отправить эти 5 доменов lp*.othersite.com в этот PHP-скрипт.

Надеюсь, я достаточно хорошо объясняю проект. По сути, нам нужно перенаправить поддомены lp* на разные страницы site.example.com/page*.html, не меняя адрес в адресной строке.

Буду признателен за советы и рекомендации. Все, что я смог сделать, это перенаправить эти URL-адреса в мой PHP-скрипт, но адресная строка изменилась, и поскольку это было перенаправление, адресная строка также изменилась (в этот момент PHP-скрипт не работал, потому что имя хоста изменилось)

решение1

Настройте виртуальный хост для каждого имени хоста, используя тот же DocumentRoot, но используйте:

DirectoryIndex page1.html

для lp1,

DirectoryIndex page2.html

для lp2 и т. д., чтобы эти страницы использовались как страницы по умолчанию вместо index.html.

Так, например, http://lp3.othersite.com/будет обслуживать page3.html. Он также позволит вам перейти к http://lp3.othersite.com/page1.htmlи т. д., но страницей по умолчанию будет то, что вы укажете с помощью DirectoryIndexдирективы.

решение2

Может быть, я что-то упускаю, но мне кажется, вы спрашиваете только о виртуальных хостах.https://httpd.apache.org/docs/2.2/vhosts/

Виртуальный хост требует несколько записей DNS, установленных на одном и том же веб-сервере. Apache обслуживает назначенную страницу на основе используемого имени DNS. Пользователь видит irk, который он набрал, если только вы не перенаправите.

решение3

Вы можете сделать это с помощью URL Rewrite. Просто быстрый импровизированный пример (может сработать, а может и нет):

RewriteCond %{HTTP_HOST} ^lp([0-9]).othersite.com [NC] 
RewriteRule ^(.*)$ page$1.html [NC,QSA] 

решение4

СледоватьДокументация по виртуальному хосту Apacheдля настройки VirtualHostкаждого полного доменного имени, затем используйтеmod_dirдля установки DirectoryIndexи для перенаправления используйтеmod_rewrite.

Руководство:

Как создать временные и постоянные перенаправления с помощью Apache и Nginx

Связанный контент