Apache-2.2

Htaccess重寫到位於上一層的文件

  • August 21, 2017

我在具有以下規則的子域中有一個 htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^feed([0-9]+)$ ../image.php?id=$1 [L]

所以基本上我想將來自位於子域中的提要的請求重定向到位於主域中的 image.php 文件(只是上面的一個目錄)。使用../似乎不像在 PHP 中那樣工作。

那麼如何重寫到父目錄中的文件呢?

聽上去,您已經在子域的文件根目錄中,該子域可能是在其自己的虛擬主機中定義的(它恰好指向主域文件根目錄之外的子目錄)。

不幸的是,您不能使用 mod_rewrite in 在文件根目錄上方/外部進行內部重寫.htaccess。在替換.htaccess中僅採用 URL 路徑,而不是文件系統路徑。但是,如果您直接在伺服器配置中使用 mod_rewrite,則可以執行此操作。在伺服器配置中,您可以指定文件系統路徑作為替換(您需要明確包含完整路徑,不能使用相對路徑,例如)。RewriteRule ../image.php

或者,.htaccess您可以使用帶有 mod_rewrite 的 mod_proxy 將請求從子域代理到主域。但是,這可能仍需要一些伺服器配置。例如:

RewriteRule ^feed([0-9]+)$ http://maindomain.com/image.php?id=$1 [P]

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