Apache2 - перенаправление субдомена на другой URL


15

У меня есть два субдомена, a.website.com и b.website.com, указывающие на один и тот же IP-адрес. Я хочу перенаправить сайт b.website.com на сайт a.website.com:8080. У меня есть это в моем файле .htaccess ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

...Но это не работает.

Есть ли способ заставить его работать?


Попробуйте добавить следующее .htaccessв родительский каталог над интересующим каталогом: RedirectMatch ^/foo/$ /foo/bar/или RedirectMatch ^/foo/$ /bar/baz/. Также смотрите Как заставить apache2 перенаправить в подкаталог .
августа

Ответы:


20

Вы всегда можете использовать простой VirtualHost:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

Если вы предпочитаете использовать файл .htaccess, вам просто не хватает знака% в условии перезаписи:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]

Я попробовал оба, и они не работали. У меня включен mod_rewrite, и у меня есть VirtualHost в отдельном файле сайта. Есть ли что-то, что я пропускаю?
Technius

3
Это отлично работает. У меня была проблема с перенаправлением цикла, потому что я указывал поддомен на подпапку, и эта подпапка перенаправляла. Теперь я перенаправляю субдомен на URL, соответствующий папке, и второе перенаправление происходит просто отлично!
Пасхалис

Как это сделать, чтобы сохранить http://или https://каким-либо образом b.website.comполучить доступ в первую очередь?
Голар Рамблар

0

Дополняя основной ответ

Тип перенаправления

Вы можете явно указать тип перенаправления, который вы претендуете.
Я предлагаю вам использовать временное перенаправление (302) при тестировании правила перенаправления.

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

Укажите шаблоны соответствия каталогов

Вы могли только перенаправить запросы, которые соответствуют некоторому образцу.

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.