【问题标题】:using Mod_rewrite to redirect HTTP to HTTPS使用 Mod_rewrite 将 HTTP 重定向到 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

非常感谢

汤姆

【问题讨论】:

    标签: apache url-rewriting http-redirect


    【解决方案1】:

    您是在本地主机上还是在实时服务器上尝试? 将 http 重定向到 https(整个网站的 SSL) 在 .httaccess 中试试这个

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    

    RewriteCond %{SERVER_PORT}s ^(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 参数。