Apache-2.4

Apache 僅重寫代理首頁

  • January 5, 2021

我嘗試了各種正則表達式(^/$, ^index.php$, ^$)來重寫/代理 WordPress 網站的首頁.htaccess。作為記錄,我已經載入了適當的模組來完成此操作,並且可以使用特定的正則表達式為其他路徑執行此操作,但不是首頁。其他答案已經表明^$並且^/$會起作用,但它對我不起作用。怎麼可能只定位到首頁?

RewriteEngine On
RewriteBase /
RewriteRule ^$ http://some-other-domain.com [P]

最終目標是只為首頁提供來自另一個網站的頁面。也許有更好的方法?

.htaccess在文件頂部的WordPress 前端控制器之前嘗試類似以下的操作:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ http://some-other-domain.com/ [P]

這裡不需要RewriteBaseand指令。RewriteEngine大概後面已經作為程式碼塊的RewriteEngine一部分出現在文件中# BEGIN WordPress(順序並不重要)。

請注意替換字元串上的斜杠後綴。這是 URL 的必需部分(不能有空的 URL 路徑)。如果您在此處省略它,那麼以後必須有其他東西“修復”它。在外部重定向的情況下,瀏覽器會“修復”它,但這裡沒有“瀏覽器”。

這匹配一個空的 URL 路徑和index.php(如果 mod_dir在mod_rewrite 通過 mod_proxy 發送請求之前發出目錄索引的子請求)。在這種情況下,檢查REDIRECT_STATUSenv var 的條件是必要的,以避免代理所有內容,因為 WordPress 前端控制器將所有內容重寫為index.php. 該條件確保僅匹配直接請求,而不是重寫請求。

旁白:類似的RewriteRule 模式^/$永遠不會在.htaccess上下文中匹配。這僅在該指令用於伺服器(或虛擬主機)上下文時才有效。

引用自:https://serverfault.com/questions/1048695