2011-12-10 56 views
0

我正在定義mod_rewrite規則,如果請求的文件不存在,它將重寫所有對我/application.php的請求,否則不會進行任何重寫。這很簡單:現有文件的mod_rewrite規則

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule .* application.php [PT] 

只有一個與代碼的問題。假設我有foo.html文件。然後要求,如:

http://example.com/foo.html/some/other/string

會愛上404錯誤。 爲什麼?

回答

0

將會出現404錯誤。爲什麼?

因爲該URL不存在。它正在查找文件夾/foo.html/some/other中的文件string,它不在那裏。

要使用http://example.com/foo.html/some/other/string URL結構進行利用的行爲 - 將第一個項目作爲文件名稱,其餘項目作爲參數 - 稱爲"pathinfo"。它無關,與mod_rewrite的,但將可用,如果你能夠在你的Apache配置如下:

AcceptPathInfo On 

它看起來像設置當前處於「關」爲您服務。

如果啓用它,文件名後的部分將提供給foo.html - 在PHP中,這將是在

$_SERVER["PATH_INFO"] 

變量。

因爲這種方法不需要重寫模塊是積極的,這有時被稱爲「窮人的mod_rewrite」 - 它工作正常,但並不完全一樣漂亮「真正的」重寫靈活。