除非URL符合特定条件,否则重定向到SSL

时间:2013-08-28 08:51:29

标签: apache .htaccess mod-rewrite ssl

这是我的htaccess代码:

RewriteOptions inherit
RewriteEngine on

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]


AddDefaultCharset utf-8
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    ^([0-9A-Za-z]{12})(\/.+|\.html?|$)   /cgi-bin/index_dl.cgi?op=download1&id=$1&fname=$2 [L]
RewriteRule    ^ot:(.*)             /cgi-bin/index_dl.cgi?op=download1&otid=$1 [L,B]

目前它正在将所有内容重定向到SSL。但是我想要它,以便当文件名符合这个标准时

RewriteRule    ^([0-9A-Za-z]{12})(\/.+|\.html?|$)   /cgi-bin/index_dl.cgi?op=download1&id=$1&fname=$2 [L]

它只需要允许非SSL

我用Google搜索并用Google搜索,但我无法弄清楚如何做到这一点。

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

在执行重定向的规则中,只需添加排除条件:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/([0-9A-Za-z]{12})(\/.+|\.html?|$)
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

或者您可以将其与规则的模式结合使用:

RewriteCond %{HTTPS} off
RewriteRule !^([0-9A-Za-z]{12})(\/.+|\.html?|$) https://www.domain.com%{REQUEST_URI} [R=301,L]

编辑:

要将该模式的SSL请求重定向到非SSL,请在另一个重定向规则下面添加此项:

RewriteCond %{HTTPS} on
RewriteRule ^([0-9A-Za-z]{12})(\/.+|\.html?|$) https://www.domain.com%{REQUEST_URI} [R=301,L]