提问人:Andrew G. Johnson 提问时间:3/18/2009 最后编辑:GEOCHETAndrew G. Johnson 更新时间:11/25/2009 访问量:9802
如何使用htaccess从https翻转到http
How to use htaccess to flip from https to http
问:
好吧,我有一个网站对所有 URL 都使用相对路径。我刚刚添加了一个购物车,因此两个或三个结帐页面使用 HTTPS 而不是 HTTP。我的问题是,用户在结帐过程中点击导航上的链接,或者当他们不需要它的页面时,他们似乎使用HTTPS访问该页面(在某些情况下,由于外部文件,例如GoogleMaps.js,它无法处理它)
答:
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]
评论