2010-07-24 73 views
0

是否可以在.htaccess mod_rewrite中引用完整/絕對路徑目錄,例如/usr/home/public_html/xhtaccess引用完整路徑目錄的mod_rewrite

我試過最明顯的情況,把以下內容放在子域的.htaccess中(存儲在public_html文件夾中),希望它能夠映射(不重定向!)到絕對指向的文件上目錄:

RewriteEngine on RewriteRule /xochotl /usr/home/public_html/x.php

這並不工作...我得到一個500內部服務器錯誤

主public_html目錄的簡單的.htaccess具有以下,並與相關工作目錄...

RewritEngine on RewriteRule /xochotl x.php

回答

1

在每個目錄範圍內使用mod_rewrite時,您不能映射到一個文件路徑(即使用.htaccess)。但是,如果將規則放置在每個服務器上下文中(httpd.conf,無論是在主服務器還是虛擬服務器配置中),您都應該能夠映射到絕對路徑。

原因是mod_rewrite如何在每個目錄上下文中工作。 mod_rewrite轉換URL,然後將其自身指定爲請求的處理程序。這允許它通過Apache發送內部重定向,否則這在處理的最後階段是不可能的。

內部重定向是通過調用Apache API函數ap_internal_redirect完成的,該API函數需要一個URI,然後將其重新映射到文件系統。另外,這也正是爲什麼%{REQUEST_URI}%{REQUEST_FILENAME}在執行涉及爲後續請求讀取同一個.htaccess文件(例如,任何時間.htaccess位於站點根目錄中)的重定向時發生更改的原因。