【问题标题】:Rewrite default / (index.php) in Apache在 Apache 中重写默认 / (index.php)
【发布时间】:2013-02-03 22:19:26
【问题描述】:

目前,服务器将任何对http://www.example.com/index.php的HTTP请求重定向到HTTPS。

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} index.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

但问题是当向http://www.example.com 发出请求时,没有进行重定向。

如果 {REQUEST_URI} 为空,如何使服务器重定向到 HTTPS。 (我假设它是空的)

编辑:
在 akostadinov 的回答之后,我修改了 .htaccess 以包含它,并且重写工作。我会在这里发布,以防以后有人遇到同样的问题!

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

【问题讨论】:

    标签: apache mod-rewrite redirect


    【解决方案1】:

    请求是/。请参阅下面的curl -v 输出(截断)。顺便说一句,如果您真的不需要匹配特定条件,则可以省略 URI 条件。

    $ curl -v example.com
    * About to connect() to example.com port 80 (#0)
    *   Trying 192.0.43.10...
    * connected
    * Connected to example.com (192.0.43.10) port 80 (#0)
    > GET / HTTP/1.1
    > User-Agent: curl/7.27.0
    > Host: example.com
    > Accept: */*
    ...
    

    【讨论】:

    • 这很奇怪。在看到您的问题之前,我对 .htaccess 进行了一些更改,但没有奏效。然后,当我将其重置为其原始代码时,它开始重定向 / 而不进行任何其他更改。当发生这种情况时,我讨厌它。我现在不知道出了什么问题.. 谢谢你的回答!如果有人对此有任何cmets,请告诉我。我想知道更多。
    • 好的,今天又试了一次,还是不行!我为 / 设置了重定向的条件,它起作用了!感谢您的帮助!
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    相关资源
    最近更新 更多