設定 Apache 標頭,條件為排除路徑/目錄/伺服器 ip

設定 Apache 標頭,條件為排除路徑/目錄/伺服器 ip

我使用名為Duplicator Pro 的WordPress 插件,使用其安裝程式進行安裝的最佳方法是使用伺服器IP 而不是網域,因為這樣可以更輕鬆地自動填入和連接到伺服器,同時也不會觸發多個ModSecurity 規則。

最好的安裝網址是:

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.phpmain.installer.php。如果這些請求被升級版(或者,更可能是“重定向”)然後其他東西正在這樣做。

相關內容