设置 Apache 标头,并排除路径/目录/服务器 ips

设置 Apache 标头,并排除路径/目录/服务器 ips

我使用一个名为 Duplicator Pro 的 WordPress 插件,使用其安装程序的最佳安装方式是使用服务器 IP 而不是域,因为这样它可以更轻松地自动填充和连接到服务器,同时不会触发多个 ModSecurity 规则。

最佳安装URL为:

http://111.222.333.444/~customcpanelaccount/customfolder/installer.php

代替:

https://website.com/customfolder/installer.php

如果你加载其中任何一个文件,它会自动重定向到:

/customfolder/dup-installer/main.installer.php

但是,由于服务器具有以下 Apache/LiteSpeed 规则,它会自动将 http:// 重定向到 https://,从而导致其抛出以下消息:

连接到网络

<IfModule mod_headers.c>
    Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>

我正在尝试找出一种方法,使上述 Apache/LiteSpeed 规则仅适用于域,而不适用于直接 IP,或者使其在使用文件installer.phpmain.installer.php目录时不会触发/dup-installer/

遗憾的是,没有 FilesNotMatch / DirectoryNotMatch / LocationNotMatch 类型的 if 语句。

任何人有任何想法,我将非常感谢您的帮助/建议!

答案1

DOMAIN_REQUESTED如果请求域(而不是 IP 地址),则可以设置环境变量(例如),并Header根据是否使用参数设置此环境变量有条件地设置env=

例如:

SetEnvIf Host "[a-z]" DOMAIN_REQUESTED
Header always set Content-Security-Policy "upgrade-insecure-requests;" env=DOMAIN_REQUESTED

如果Host标头包含字符 az,则您必须请求域名,而不是 IP 地址。在这种情况下,DOMAIN_REQUESTED环境变量设置为1

然而...

  • 似乎很奇怪,使用服务器的 IP 地址和每个用户的 Web 目录来安装这个比不安全的 HTTP 更好?!通常最好避免使用每个用户的 Web 目录 (mod_userdir),因为它确实会弄乱相对于根的 URL 路径。

  • 如果这只是为了安装过程,你不能简单地暂时注释掉该Header指令吗?

遗憾的是,没有 FilesNotMatch / DirectoryNotMatch / LocationNotMatch 类型的 if 语句。

嗯,有一点,你可以使用负向前瞻(或者向后看)来确定何时匹配不是发生。

...或者使其在使用的文件installer.phpmain.installer.php目录时不会触发/dup-installer/

HTTPContent-Security-Policy: upgrade-insecure-requests;响应标头仅影响链接的资源,而不影响顶级导航。因此这不适installer.php用于main.installer.php如果这些请求正在已升级(或者更有可能是“重定向”)那么其他东西正在做同样的事情。

相关内容