Apache2 - Chuyển hướng một tên miền phụ sang một URL khác


15

Tôi có hai tên miền phụ, a.website.com và b.website.com, chỉ đến cùng một địa chỉ IP. Tôi muốn chuyển hướng b.website.com đến a.website.com:8080. Tôi có cái này trong tập tin .htaccess của tôi ...

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

...Nhưng nó không hoạt động.

Có cách nào để làm cho nó hoạt động?


Hãy thử thêm các mục sau .htaccessvào thư mục mẹ phía trên thư mục quan tâm: RedirectMatch ^/foo/$ /foo/bar/hoặc RedirectMatch ^/foo/$ /bar/baz/. Xem thêm Làm thế nào để có được apache2 để chuyển hướng đến thư mục con .
6/11/2016

Câu trả lời:


20

Bạn luôn có thể sử dụng một Virtualhost đơn giản:

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

Nếu bạn muốn sử dụng tệp .htaccess, bạn chỉ thiếu dấu% trên Điều kiện viết lại:

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

Tôi đã thử cả hai và họ đã không làm việc. Tôi đã kích hoạt mod_rewrite và tôi có Virtualhost trong một tệp trang web riêng. Có điều gì tôi đang thiếu?
Technius

3
Điều này hoạt động tốt. Tôi gặp vấn đề về chuyển hướng vòng lặp, vì tôi đã trỏ một tên miền phụ vào thư mục con và thư mục con đó đang chuyển hướng. Bây giờ, tôi chuyển hướng tên miền phụ đến URL tương ứng với thư mục và lần chuyển hướng thứ 2 diễn ra tốt đẹp!
Paschalis

Làm thế nào để làm ot để bảo tồn http://hoặc https://, bất cứ cách nào b.website.comđã được truy cập ở nơi đầu tiên?
Gole Ramblar

0

Bổ sung câu trả lời chính

Chuyển hướng loại

Bạn có thể chỉ định rõ ràng loại chuyển hướng bạn giả vờ.
Tôi khuyên bạn nên sử dụng chuyển hướng tạm thời (302) trong khi kiểm tra quy tắc chuyển hướng.

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

Chỉ định mẫu khớp thư mục

Bạn chỉ có thể chuyển hướng yêu cầu phù hợp với một số mô hình.

# 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]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.