.htaccess将所有URL重定向到https,不包括特定的查询字符串

时间:2014-11-28 14:17:55

标签: apache .htaccess mod-rewrite

我有一些规则强制使用https重写任何http URL 这些规则应仅适用于特定的HTTP主机(即,如果用户通过特定的子域名访问该站点)。

一切正常,但现在我想在用户访问特定网址时停用https重定向

e.g。 http://subdomain.domain.com/test/abc.htmlhttp://subdomain.domain.com/test/123456.html

这是我的代码,但Apache似乎忽略了我的第二行

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com [NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/test/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

1 个答案:

答案 0 :(得分:1)

你的规则如下:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !\s/+talent/ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]

最好使用%{THE_REQUEST},因为THE_REQUEST变量代表Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。