Mod重写,将所有内容重定向到https,但特定URI除外,并将该URI从https重定向到http

时间:2014-02-11 00:35:27

标签: apache mod-rewrite redirect httpd.conf

所以我一直在墙上试过很多不同的选择和配置。我正在尝试将我的网站重定向到https,但一个特定的URI除外,我想将其从https重定向到http,然后保持为http。我非常感谢任何帮助。这是通过virtualhost配置完成的。下面是我与ssl.conf和mysite.conf成对试过的设置。但是我继续获得重定向循环或不加载的页面。

mysite.conf

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !/example
RewriteRule ^(.*)$ https://my.site.com$1 [R,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^(/|page1|page2)
RewriteRule ^(.*)$ https://my.site.com$1 [R,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !=/example
RewriteRule ^(.*)$ https://my.site.com$1 [R,L]

RewriteCond %{REQUEST_URI} =/example
RewriteRule ^(.*)$ http://my.site.com$1 [R,L]

以上其中一项。

然后在ssl.conf中

RewriteEngine on
RewriteCond %{REQUEST_URI} =/example
RewriteRule ^(.*)$ http://my.site.com$1 [R,L]

1 个答案:

答案 0 :(得分:0)

这应该为你做。放置最具体的规则(/example的规则)。

RewriteEngine on

RewriteCond %{HTTPS} =on
RewriteRule ^/?example$ http://my.site.com/example [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/?example$
RewriteRule ^/?(.*)$ https://my.site.com/$1 [R=301,L]

这应该在服务器(.conf)或目录(.htaccess)上下文中起作用。