web-dev-qa-db-ja.com

Apache2-サブドメインを別のURLにリダイレクトする

同じIPアドレスをポイントする2つのサブドメインa.website.comとb.website.comがあります。 b.website.comをa.website.com:8080にリダイレクトしたい。私の.htaccessファイルにこれがあります...

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

...しかし、機能しません。

それを機能させる方法はありますか?

15
Technius

常に単純な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]
20
mattw

主な答えを補完する

リダイレクトタイプ

ふりをするリダイレクトのタイプを明示的に指定できます。
リダイレクトルールのテスト中は、一時的なリダイレクト(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]
0
ePi272314