0

这是我的 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

我用谷歌搜索和搜索,但我无法弄清楚如何做到这一点。

任何帮助表示赞赏:)

4

1 回答 1

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]
于 2013-08-28T09:03:07.807 回答