使用 Mod_rewrite 将 HTTP 重定向到 HTTPS
Posted
技术标签:
【中文标题】使用 Mod_rewrite 将 HTTP 重定向到 HTTPS【英文标题】:using Mod_rewrite to redirect HTTP to HTTPS 【发布时间】:2013-07-05 11:46:48 【问题描述】:我需要从http://test-glad/redirect
重定向到https://test-glad/start.do
主要问题是我需要在请求中维护 POST 参数。
我无法使用标准 http 重定向来执行此操作,因为 POST 参数未按照 RFC 中的规定重新发送
我也尝试过使用代理通行证,但它不起作用。
我现在正在尝试使用 Apache URL 重写来做到这一点,但遇到了困难。你知道这是否可能。如果是这样,我们将非常感谢您对语法的帮助。
我使用的是 Apache 2.2
非常感谢
汤姆
【问题讨论】:
【参考方案1】:您是在本地主机上还是在实时服务器上尝试? 将 http 重定向到 https(整个网站的 SSL) 在 .httaccess 中试试这个
RewriteEngine On
RewriteCond %HTTPS off
RewriteRule (.*) https://%HTTP_HOST%REQUEST_URI
或
RewriteCond %SERVER_PORTs ^(443(s)|[0-9]+s)$
RewriteRule ^(.*)$ - [env=askapache:%2]
# redirect urls with index.html to folder
RewriteCond %THE_REQUEST ^[A-Z]3,9\ /([^/]+/)*index.html HTTP/
RewriteRule ^(([^/]+/)*)index.html$ http%ENV:askapache://%HTTP_HOST/$1 [R=301,L]
# change // to /
RewriteCond %THE_REQUEST ^[A-Z]3,9\ /(.*)//(.*) HTTP/ [NC]
RewriteRule ^.*$ http%ENV:askapache://%HTTP_HOST/%1/%2 [R=301,L]
【讨论】:
这是一个实时服务器。抱歉,我不知道 .httaccess 文件在哪里。我只有一个 httpd.conf 文件。 我已经尝试过您的第一个建议,但没有任何效果。但我不相信这条规则会受到影响。我尝试了一个也不起作用的基本重定向规则。我已经加载了 mod-rewrite 模块。我还需要做什么吗? ok.. 抱歉它的 .htaccess 文件,如果你没有它,然后创建一个新文件名.htaccess
带一个点! 并输入代码(尝试任何人,应该可以) 在文件中并将文件放在服务器目录的根目录中,说明它是 public_html 还是 www 目录。 & 我确定在 httpf.conf 文件中启用了 mod_rewrite 可以通过 phpinfo() 进行验证
如果有帮助请查看此链接link
好的,我已经让你的第一个解决方案工作了。它对我有用,因为我使用 vitualhost 端口 80 进行了重定向。直接现在正在工作,但没有通过 post 参数。以上是关于使用 Mod_rewrite 将 HTTP 重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
Apache mod_rewrite实现HTTP和HTTPS重定向跳转
PHP 使用mod_rewrite将单个页面重定向到HTTPS