Apache 重寫僅代理主頁

Apache 重寫僅代理主頁

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

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

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

答案1

請在文件頂部嘗試類似以下內容.htaccessWordPress 前端控制器:

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

此處不需要RewriteBase和指令。RewriteEngine大概RewriteEngine已經作為程式碼區塊的一部分出現在檔案中# BEGIN WordPress(順序並不重要)。

注意上面的斜線後綴代換細繩。這是一個必需的URL 的一部分(不能有空 URL 路徑)。如果您在這裡省略它,那麼稍後必須用其他東西來「修復」它。如果是外部重定向,則瀏覽器會“修復”它,但這裡沒有“瀏覽器”。

這與空 URL 路徑和index.php(如果 mod_dir 發出目錄索引的子請求)相符mod_rewrite透過mod_proxy發送請求)。這狀態在這種情況下,檢查REDIRECT_STATUS環境變數是必要的,以避免代理一切,因為 WordPress 前端控制器將所有內容重寫為index.php.此條件確保僅符合直接請求,而不符合重寫請求。

在旁邊:ARewriteRule 圖案like^/$在上下文中永遠不會匹配.htaccess。僅當該指令用於伺服器(或者虛擬主機) 情境.

相關內容