gpt4 book ai didi

Apache RewriteRule - 除了本地主机和环回之外的所有内容

转载 作者:行者123 更新时间:2023-12-02 06:15:47 25 4
gpt4 key购买 nike

我有一个服务器,我想强制与外部世界进行 https 通信,但是,服务器上的某些服务需要由本地服务器上的进程通过 http 访问。

我尝试了以下方法:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

但是当然,运行在本地服务器上的服务无法通过 http 访问。我如何对除 localhost 和 127.0.0.1 之外的所有内容强制执行 https?或者,如果更简单,我有 2 个外部域用于此服务器 - 我如何只为 http://sub1.domain1.suffix1 强制使用 https和 http://sub2.domain2.suffix2和服务器的外部IP?

最佳答案

试试这个,我不确定它会起作用,但它可能会起作用,我从未处理过实际的“本地主机”值。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mysub.mydomain.com/$1 [R=301,L]

更新2:我想过这个,并意识到这无法处理这种情况:
https://mysub2.mydomain.com/重定向到 https://mysub.mydomain.com/ - 在添加此之前,测试该 url 并查看它是否使用第一条规则重定向,如果没有,则改为测试第二组规则。

要纠正这种情况,请尝试:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} mysub2.mydomain.com [NC]
RewriteRule ^/?(.*) https://mysub.mydomain.com/$1 [R=301,L]

UPDATE2 解释,如果它有效:

使测试更复杂,现在重写发生如果不是 localhost/127.0.0.1 然后测试不是 https 或者是 mysub2.mydomain.com(或您想要重定向到的服务器上的任何其他域/子域: https://mysub.mydomain.com

=更新说明:

这是一组非常简单的规则。我们创建了 3 个必须满足的条件才能应用重写规则。为了安全起见,我习惯性地使用 ^,即它的开头是这样的,所以这说明主机名/IP 不以 localhost/127.0.0.1 开头。 !不是的意思。
  • 主机名不是 localhost(主机名是您在浏览器中键入以访问该页面的名称,或者您用于通过 Web 服务访问该页面的名称)。因为域名不区分大小写,所以我添加了 [NC] 标志,表示 No Case,即不区分大小写。这是我不确定会起作用的那个:

    RewriteCond %{HTTP_HOST} !^localhost [NC]
  • 远程请求IP不是127.0.0.1

    RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
  • https 尚未开启

    RewriteCond %{HTTPS} !=on

  • 然后是实际的重写规则,如果满足这三个条件就会触发。重写所有不包括起始/的 url,取该 url (.*) 中不包括域名的所有内容,并将其添加到 https://mysub.mydomain.com/ 之后,然后执行 301 永久重定向到该结果的完整 url。 ?表示 0 或 1。 (.*) 表示:将开始/或不开始/之后的所有内容放入 $1,规则中的每个 (...) 放入变量 $1、$2 等。

    重写规则 ^/?(.*) https://mysub.mydomain.com/ $1 [R=301,L]

    =END 更新

    您的设置对我来说并不完全直观,但假设服务器上只有一个实际的域要处理请求,那么我认为这会起作用,但不是肯定的,因为有一些我不熟悉的功能和。

    要重定向到 https,三个条件都必须为真,即非 local/127,且 https 未开启。

    关于Apache RewriteRule - 除了本地主机和环回之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33025559/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com