我使用一个名为 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.php
和main.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.php
和main.installer.php
目录时不会触发/dup-installer/
HTTPContent-Security-Policy: upgrade-insecure-requests;
响应标头仅影响链接的资源,而不影响顶级导航。因此这不适installer.php
用于main.installer.php
如果这些请求正在已升级(或者更有可能是“重定向”)那么其他东西正在做同样的事情。