Apache2 - Bir alt alan adını başka bir URL'ye yönlendirme


15

Aynı IP adresine işaret eden iki alt alanım var: a.website.com ve b.website.com. B.website.com adresini a.website.com:8080 adresine yönlendirmek istiyorum. Bunu .htaccess dosyamda var ...

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

...ama bu çalışmıyor.

Çalışmasını sağlamanın bir yolu var mı?


.htaccessİlgilenilen dizinin üstündeki üst dizine aşağıdakileri eklemeyi deneyin : RedirectMatch ^/foo/$ /foo/bar/veya RedirectMatch ^/foo/$ /bar/baz/. Ayrıca bkz. Apache2'nin bir alt dizine yönlendirilmesi .
jww

Yanıtlar:


20

Her zaman basit bir VirtualHost kullanabilirsiniz:

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

.Htaccess dosyasına gitmeyi tercih ediyorsanız, Yeniden Yazma Koşulu'nda yalnızca% işareti eksik:

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

İkisini de denedim ve işe yaramadılar. Mod_rewrite etkinleştirilmiş ve ayrı bir site dosyasında VirtualHost var. Kaçırdığım bir şey var mı?
Technius

3
Bu iyi çalışıyor. Döngü yönlendirme sorunum vardı, çünkü bir alt etki alanına bir alt klasöre işaret ediyordum ve bu alt klasör yeniden yönlendiriyordu. Şimdi, alt alan adını klasöre karşılık gelen URL'ye yönlendiriyorum ve 2. yönlendirme gayet iyi oluyor!
Paschalis

Nasıl korunur? http:// veya ilk etapta https://hangi yoldan b.website.comerişilir?
Golar Ramblar

0

Ana cevabı tamamlamak

Yönlendirme türü

Yaptığınız yönlendirme türünü açıkça belirtebilirsiniz.
Yönlendirme kuralını test ederken geçici bir yönlendirme (302) kullanmanızı öneririm.

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

Dizin eşleme kalıplarını belirtme

Yalnızca bazı modellerle eşleşen istekleri yeniden yönlendirebilirsiniz.

# 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]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.