2012-01-06 31 views
8

tôi có viết lại quy tắc đơn giản này và nó hoạt động đúng theo http:Rewrite Rule để làm việc trên HTTP và HTTPS

RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
RewriteRule ^/work/all.html /portfolio/ [L,R=301] 

Tuy nhiên, các quy tắc không mất hiệu lực khi tôi đang trên https . Tôi đã sửa đổi quy tắc được đặt thành sau nhưng không có kết quả.

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
RewriteRule ^/work/all.html /portfolio/ [L,R=301] 

Làm thế nào tôi có thể làm cho quy tắc đó để làm việc cả trên httphttps? Vui lòng cho tôi biết nếu tôi cần cung cấp thêm thông tin.

+1

Is nó là một .htaccess hoặc vhost? Nếu một vhost, chỉ cần đặt các quy tắc viết lại trong một tập tin riêng biệt và nguồn nó trong cả hai vhosts – fge

+0

Đó là một vhost. @fge: Bạn có nghĩa là cả hai vhost cho non-ssl và ssl? Xin lỗi, điều đó nghe có vẻ thực sự cơ bản nhưng tôi mới bắt đầu làm quen với việc viết lại mod của Apache. – moey

+1

Vâng, chỉ thị mod_rewrite giống như bất kỳ mục đích nào khác, nếu bạn đặt chúng trong một tệp khác và 'Bao gồm' tệp này từ tệp khác, nó sẽ làm điều đó. Vì vậy, có, chỉ cần viết các quy tắc trong một tập tin mà bạn bao gồm trong cả hai SSL và không SSL vhost (loại bỏ các 'RewriteCond' trên HTTPS). – fge

Trả lời

8

Apache sử dụng một vhost khác nhau cho cấu hình ssl:

<IfModule mod_ssl.c> 
    <VirtualHost _default_:443> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
    RewriteRule ^/work/all.html /portfolio/ [L,R=301] 
    ... 
    </VirtualHost> 
</IfModule> 

Liên kết này có một ví dụ cho việc cấu hình Apache với SSL trên Debian, nhưng phải dễ dàng để ngoại suy để bất cứ nền tảng bạn đang ở trên http://www.debian-administration.org/articles/349

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