2013-04-16 155 views
0

我有一个站点需要强制SSL模式,然后强制为非SSL。多条件重写规则

我已经开始下列规则:

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^/tourism/bookings/(.*) https://%{SERVER_NAME}/tourism/bookings/$1 [R,L] 
    RewriteRule ^/?bookings/(.*) https://%{SERVER_NAME}/bookings/$1 [R,L] 
</VirtualHost> 

<VirtualHost *:443> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} !^/bookings 
    RewriteCond %{REQUEST_URI} !^/tourism/bookings 
    RewriteRule (.*) http://%{SERVER_NAME}$1 [L,R,QSA] 
</VirtualHost> 

现在,上面的作品 - 但SSL模式显然解释/包括/ *用它强制非SSL ...有一个调整以上允许我强制除了上面两个之外的所有内容(但是任何依赖项,如JS/CSS包括遵循当前协议)?

在此先感谢

回答

0

如果要排除其他的事情除了/bookings/tourism/bookings后来干脆在条件排除它们。

而且,你不需要RewriteCond %{HTTPS} !=on条件,因为虚拟主机总是将非HTTPS:

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} !\.(css|js)$ [NC] 
    RewriteRule ^/tourism/bookings/(.*) https://%{SERVER_NAME}/tourism/bookings/$1 [R,L] 
    RewriteCond %{REQUEST_URI} !\.(css|js)$ [NC] 
    RewriteRule ^/?bookings/(.*) https://%{SERVER_NAME}/bookings/$1 [R,L] 
</VirtualHost> 

<VirtualHost *:443> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} !^/bookings 
    RewriteCond %{REQUEST_URI} !^/tourism/bookings 
    RewriteCond %{REQUEST_URI} !\.(css|js)$ [NC] 
    RewriteRule (.*) http://%{SERVER_NAME}$1 [L,R,QSA] 
</VirtualHost> 
+0

万分感谢,您的建议排除工作100%。 –