Apache2 - Mengarahkan subdomain ke URL lain

15

Saya memiliki dua subdomain, a.website.com dan b.website.com, menunjuk ke alamat IP yang sama. Saya ingin mengarahkan b.website.com ke a.website.com:8080. Saya memiliki ini di file .htaccess saya ...

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

... tetapi tidak berhasil.

Apakah ada cara untuk membuatnya bekerja?

Technius
sumber
Coba tambahkan yang berikut ke .htaccessdalam direktori induk di atas direktori yang menarik: RedirectMatch ^/foo/$ /foo/bar/atau RedirectMatch ^/foo/$ /bar/baz/. Lihat juga Cara mendapatkan apache2 untuk mengalihkan ke subdirektori .
jww

Jawaban:

20

Anda selalu dapat menggunakan VirtualHost sederhana:

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

Jika Anda lebih suka menggunakan file .htaccess, Anda hanya kehilangan tanda% pada Ketentuan Penulisan Ulang:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
mattw
sumber
Saya mencoba keduanya dan mereka tidak berhasil. Saya telah mengaktifkan mod_rewrite dan saya memiliki VirtualHost di file situs yang terpisah. Apakah ada sesuatu yang saya lewatkan?
Technius
3
Ini berfungsi dengan baik. Saya punya masalah pengalihan loop, karena saya mengarahkan subdomain ke subfolder, dan subfolder itu mengarahkan ulang. Sekarang, saya mengarahkan subdomain ke URL yang sesuai dengan folder, dan pengalihan ke-2 terjadi dengan baik!
Paschalis
Bagaimana cara mempertahankan http://atau https://, cara apa pun b.website.comyang diakses sejak awal?
Golar Ramblar
0

Melengkapi jawaban utama

Jenis pengalihan

Anda dapat secara eksplisit menentukan jenis pengalihan yang Anda pura-pura.
Saya sarankan Anda menggunakan pengalihan sementara (302) saat menguji aturan pengalihan.

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

Tentukan pola pencocokan direktori

Anda hanya bisa mengarahkan permintaan yang cocok dengan beberapa pola.

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