我有這種重寫條件,將所有不存在文件的請求重定向到父目錄中的app.php。mod_rewrite:通過.htaccess設置自定義頭文件
Options -MultiViews
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1#%{REQUEST_URI} ([^#]*)#(.*)\1$
RewriteRule ^(.*)$ %2../app.php [L]
在最後一行(重寫規則)$ 1的值是相對於地方.htacces,爲了使其便攜的目錄路徑(在這裏找到:http://linlog.skepticats.com/entries/2014/08/Using_RewriteBase_without_knowing_it.php)。
即:調用http://localhost/myapp/public/test123/r.txt我將在$ 1變量中獲取test123/r.txt(考慮到.htaccess是公開的/)。
我想$ 1的值傳遞給app.php,一個共同的解決辦法是將其追加爲查詢字符串:
RewriteRule ^(.*)$ %2../app.php?__path=$1 [L]
這樣,我有__Path作爲GET變量( PHP:$ _REQUEST [「__ path」]),但它如何與POST等其他類型的請求一起工作(查詢字符串不應該在那裏)?
一個更乾淨的解決方案是將$ 1放入HTTP自定義標題中,但是,如何設置自定義標題,通過.htacess將MYAPP_PATH設置爲$ 1值?
PS:我注意到了這個技巧?__ path = $ 1覆蓋了我在原始URL中傳遞的所有查詢字符串。因此,通過自定義標頭傳遞某些東西似乎是唯一的解決方案。 – alexroat