Apache2 - Przekierowanie poddomeny na inny adres URL

15

Mam dwie poddomeny, a.website.com i b.website.com, wskazujące na ten sam adres IP. Chcę przekierować b.website.com na a.website.com:8080. Mam to w moim pliku .htaccess ...

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

...ale to nie działa.

Czy istnieje sposób, aby to zadziałało?

Technius
źródło
Spróbuj dodać następujące elementy do .htaccesskatalogu nadrzędnego nad katalogiem zainteresowania: RedirectMatch ^/foo/$ /foo/bar/lub RedirectMatch ^/foo/$ /bar/baz/. Zobacz także Jak uzyskać apache2 do przekierowania do podkatalogu .
jww

Odpowiedzi:

20

Zawsze możesz użyć prostego VirtualHost:

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

Jeśli wolisz korzystać z pliku .htaccess, po prostu brakuje znaku% w warunku Przepisz:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
mattw
źródło
Próbowałem obu i nie działały. Mam włączoną mod_rewrite i mam VirtualHost w osobnym pliku strony. Czy czegoś mi brakuje?
Technius
3
To działa dobrze. Miałem problem z przekierowaniem pętli, ponieważ wskazywałam subdomenę na podfolder, a ten podfolder przekierowywał. Teraz przekierowuję subdomenę na adres URL odpowiadający folderowi, a drugie przekierowanie odbywa się w porządku!
Paschalis
Jak zrobić, aby zachować http://lub https://w jakikolwiek sposób b.website.combył dostępny w pierwszej kolejności?
Golar Ramblar
0

Uzupełnienie głównej odpowiedzi

Rodzaj przekierowania

Możesz jawnie określić typ udawanego przekierowania.
Sugeruję użycie tymczasowego przekierowania (302) podczas testowania reguły przekierowania.

# 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]

Określ wzorce dopasowania do katalogu

Możesz przekierowywać tylko żądania pasujące do określonego wzorca.

# 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]
ePi272314
źródło