仅在输入密码时执行Apache重定向
时间:2020-03-06 14:45:53 来源:igfitidea点击:
我在我的一台机器上设置了phpMyID,并且试图使apache仅在提交密码时才重定向到HTTPS。我这样做是因为重定向所有openid流量的原始设置无法正常工作stackoverflow不喜欢我的自签名证书。这是我编写的新规则,但是不起作用:
RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php
解决方案
我们需要使用Cond测试端口(http或者httpd)和查询字符串:
RewriteCond %{SERVER_PORT} 80 RewriteCond %{QUERY_STRING} (.+) RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
如果在.htaccess上,则必须改用
RewriteCond %{SERVER_PORT} 80 RewriteCond %{QUERY_STRING} (.+) RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
更好的解决方案是:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php
说明:RewriteCond%{SERVER_PORT} 80
也匹配仅包含80
的端口。模式openid / index.php
相同(其中.
也可以是任何字符)。并且不需要添加查询,因为除非给出了替代查询,否则mod_rewrite会自动将原始请求的查询添加至替代。