我的托管服务提供商的SSL请求通过代理,我想通过.htaccess文件强制https,但SSL没有监听443,所以通过端口,https on或要求ssl来执行.htaccess无效。
我一直试图找到一种通过.htaccess查找和替换的方法。例如,.htaccess将搜索“http://”并根据此人所在的URL将所有出现的“http://”替换为“https://”,最终强制建立安全连接。到目前为止,我还没有找到办法用.htaccess做到这一点,所以任何帮助都会受到赞赏。
我知道我可以用JavaScript实现这一点,并且它也可以用PHP实现,但我真的想通过.htaccess完成这项工作。谢谢!
答案 0 :(得分:1)
RewriteEngine On
#if it is a regular http request
RewriteCond %{HTTPS} !=on
#rewrite every page to https version
RewriteRule ^(.*)$ https://www.yoursitenamehere.com/$1 [R,L]
答案 1 :(得分:0)
在“普通”HTTP中你不能。遗憾。
正常请求看起来像这样:
GET / HTTP/1.1
Host: www.example.com
无论是HTTP还是HTTPS(Host
标头都可以有端口号,它看起来完全相同,但默认端口通常省略它。)
有一种替代语法,(我怀疑)源自HTTP代理服务器:
GET http://www.example.com/ HTTP/1.1
某些Web服务器支持第二种语法(Apache确实如此;我没有测试过其他语法),但客户端不会使用第二种语法,除非他们正在与HTTP代理进行通信。有时我会考虑过滤使用第二种语法的请求,因为它们可能是尝试查找开放代理。
有几个简单的选择:
后者不是太棘手(如果你想在不同的证书上使用它,你可以使用StartSSL或推出自己的CA),你可以选择低开销的密码套件(例如RC4)