使用 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

如何使用基于 404 错误的 mod_rewrite 重定向到自定义错误页面

.htaccess mod_rewrite 变量通过重定向

使用 mod_rewrite 重定向查询字符串(反之亦然)

仅使用 mod_rewrite 重定向主页