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 перенаправляти до підкаталогу .
jww

Відповіді:


20

Ви завжди можете використовувати простий VirtualHost:

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

Якщо ви хочете перейти з файлом .htaccess, вам просто не вистачає знаку% у Rewrite Condition:

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

Я спробував і те, і це не вийшло. У мене включений mod_rewrite, і я маю VirtualHost в окремому файлі сайту. Чи є щось, чого мені не вистачає?
Technius

3
Це чудово працює. У мене була проблема переадресації циклу, оскільки я вказував субдомен на підпапку, і ця підпапка переадресовувалась. Тепер я перенаправляю піддомен до URL-адреси, що відповідає папці, і 2-е перенаправлення відбувається просто чудово!
Пасхаліс

Як зробити, щоб зберегти 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.