2014-04-14 19 views
5

Tôi chuyển hướng tất cả các yêu cầu http cho tên miền phụ của tôi đến https bằng cách sử dụng mã sau.chuyển hướng tất cả tên miền phụ từ http đến https

<VirtualHost *:80> 
    ServerName subdomain.example.com 
    Redirect 302/https://subdomain.example.com 
</VirtualHost> 

Bây giờ vấn đề của tôi là làm cách nào để làm điều đó cho tất cả các tên miền phụ.

Ví dụ http: subdomain1.example.com nên đến https: subdomain1.example.com và http: subdomain2.example.com nên đến https: subdomain2.example.com

Làm thế nào để làm điều đó cho tất cả các tên miền phụ mà không cần phải tạo ra một virtualhost cho tất cả chúng

cập nhật

tôi thấy rằng RedirectMatch mất biểu thức chính quy. Có ai biết làm thế nào để làm điều đó bằng cách sử dụng regex?

Trả lời

13

Bạn có thể làm điều này:

<VirtualHost *:80> 
    ServerName subdomain.example.com 
    ServerAlias *.example.com 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ 
    RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,L] 
</VirtualHost> 

Các ServerAlias ​​sẽ cho phép các vhost để hoạt động như một ký tự đại diện, sau đó bạn có thể trích xuất các tên miền phụ (s) từ tiêu đề máy chủ và bao gồm chúng trong viết lại để https

+0

đây là cú pháp lý thuyết, nhưng nó không thể hoạt động mà không có chứng chỉ đã ký. – drabo2005

+0

Cảm ơn câu trả lời. Tôi nghĩ rằng điều này sẽ làm việc cho tôi. Nhưng có một cú pháp dễ dàng hơn để làm điều này như "Chuyển hướng 302" –

+3

@ drabo2005 - Cái gì? Đây là VirtualHost trên cổng 80 - tức là nó chỉ phục vụ HTTP - không yêu cầu chứng chỉ trên máy chủ này ... – arco444

Các vấn đề liên quan