2013-01-12 30 views
0

我想要做的是服务文件夹/肥皂或页面上有/?p =上传标题通过HTTP,其余网站通过https。 ?.htaccess将某些区域重定向到https

RewriteEngine on 
RewriteBase/


RewriteCond %{QUERY_STRING} (^|&)(p=uploads)(&|$) [NC,OR] 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule^- [E=IS_HTTP:1] 

RewriteCond %{SERVER_PORT} 443 
RewriteRule ^soap/?(.*) http://www.example.com/soap/$1 [R,L] 

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/soap 

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

这似乎为肥皂夹工作,但不能与/页P =上传

+0

您应该使用'RewriteCond%{HTTPS} off'或'RewriteCond%{HTTPS} on'而不是服务器端口。 – Grumpy

+0

¿'/ soap' ** AND **'...有/?p = uploads'的页面? ¿这两个条件都必须满足,否则他们会做? –

+0

对不起OR(不)和 – Zeb99

回答

0

这里是一个办法做到这一点:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !soap/?  [NC] 
RewriteCond %{QUERY_STRING} !p=uploads/? [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,QSA] 

的所有URL重定向到HTTPS,除了那些有/soap/?p=uploads

+0

这仍然是强制/?p =通过https – Zeb99

+0

上传请在完整的URL没有跳过规则时给出一个例子。 –

+0

https://www.example.com/?p=uploads – Zeb99