如何使用htaccess从https翻转到http

How to use htaccess to flip from https to http

提问人:Andrew G. Johnson 提问时间:3/18/2009 最后编辑:GEOCHETAndrew G. Johnson 更新时间:11/25/2009 访问量:9802

问:

好吧,我有一个网站对所有 URL 都使用相对路径。我刚刚添加了一个购物车,因此两个或三个结帐页面使用 HTTPS 而不是 HTTP。我的问题是,用户在结帐过程中点击导航上的链接,或者当他们不需要它的页面时,他们似乎使用HTTPS访问该页面(在某些情况下,由于外部文件,例如GoogleMaps.js,它无法处理它)

.htaccess https

评论


答:

2赞 andi 3/18/2009 #1

你可以尝试做这样的事情

RewriteCond %{SERVER_PORT} !^(80|8080)$
RewriteCond %{REQUEST_URI} !^(checkout|order|etc)$
RewriteRule ^(.*)$         http://yoururl$1

我不确定它是否有效,因为我没有测试它,但您可以使用测试 {SERVER_PORT} 的想法。希望对您有所帮助

评论

0赞 Andrew G. Johnson 3/18/2009
当我输入答案时,你回答了这个问题。不过我更喜欢你的!
0赞 andi 3/18/2009
这几乎是一回事。实际上,像您那样使用 %{HTTP_HOST}%{REQUEST_URI} 更优雅:)
0赞 Scott 3/18/2009
最好不要依赖端口号。检查 HTTPS 是否处于打开状态(或关闭,如果要强制打开)。
0赞 andi 3/18/2009
是的。斯科特可能是对的。我使用端口是因为我不知道%{HTTPS}。
0赞 David Z 3/18/2009
同意,%{HTTPS} 是这里要使用的东西。
3赞 Andrew G. Johnson 3/18/2009 #2

实际上让自己感到惊讶,并一起破解了一些东西。重新路由所有未 www.domain.com/checkout 的内容

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^(/checkout)
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
0赞 Gumbo 3/18/2009 #3

您不需要附加指令来排除:RewriteCond/checkout/…

RewriteCond %{HTTPS} on
RewriteRule !^checkout(/|$) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]