【问题标题】:htaccess HTTPS only no redirecthtaccess 仅 HTTPS 无重定向
【发布时间】:2015-04-30 01:58:42
【问题描述】:

我想完全阻止端口 80 (HTTP) 并且只允许 HTTPS 请求。我找到了许多如何从 HTTP 重定向到 HTTPS 的示例,但我更愿意显示错误。我无法在我的配置文件中阻止端口 80,因为我的托管服务提供商不允许我修改这些文件。如果可能,如何使用 htaccess 获得相同的结果。

我希望在我的 api.domain.com 上使用它的原因是在阅读此 article 后增加安全性。

引用文章...

除了完全放弃 HTTP Basic 之外,还有一个简单的解决方法。关闭 API 主机上的 80 端口。这会阻止连接在其轨道中失效,从而防止任何凭据以明文形式发送

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    试试:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !/error\.php
    RewriteRule ^ http://%{HTTP_HOST}/error.php [L,R]
    

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^ - [L,F]
    

    【讨论】:

    • 谢谢。这就是我正在寻找的,但是我更愿意通过 http 而不是 https 显示错误,需要另一个条件。
    • @itsliamoco Jon Lin 的解决方案非常完美。抱歉我的回复有点晚了:)
    【解决方案2】:

    Apache httpd 对此有一个特殊的指令SSLRequireSSL,否则会给出 403 错误。 (如果您想要更好的错误消息并且不需要 403,您可以使用 ErrorDocument。)

    【讨论】:

      【解决方案3】:

      你能试试这个吗:

      RewriteEngine on
      RewriteCond %{SERVER_PORT} ^80$
      RewriteCond %{REQUEST_URI} !/error\.php
      RewriteRule .? https://%{HTTP_HOST}/error.php [L,R]
      

      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteCond %{REQUEST_URI} !/error\.php
      RewriteRule ^ https://%{HTTP_HOST}/error.php [L,R]
      

      这将检查服务器端口是否为80 它会将所有请求重定向到error.php

      【讨论】:

      • 你现在可以试试。修正错字
      • 谢谢。这就是我正在寻找的,但是我更愿意通过 http 而不是 https 显示错误,需要另一个条件。
      猜你喜欢
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2017-07-15
      • 1970-01-01
      相关资源
      最近更新 更多