2011-06-04 15 views
1

我有一個的.htaccess文件用(只),下面幾行:意外的mod_rewrite behaivor

RewriteEngine on 
RewriteRule (.*)/[^/]+\.txt$ a.html [L] 

這樣做是重定向每個URL低於目前的一個目錄中,並與.txt結束。

我有兩個附加文件(文本識別的每個包含一行):

  • a.html
  • 存在

沒有名爲不存在文件。

  • 當我請求nonexistent/some.txt我得到的a.html內容,就像預期
  • 當我請求existent/some.txt我得到的a.html內容,就像預期
  • 當我請求a.html/some.txt我得到404錯誤是意外

不是說我沒有啓用dontent-negotiation。爲了證明這一點:existent/some.html return 404.

我完全被這種行爲困惑,我想知道什麼原理在這裏工作。

回答

0

也許加入(未經測試):

RewriteCond ${REQUEST_URI} !/?a\.html

+0

謝謝,但不包括expicitly'a.html'只會在此*簡化*例如工作。我剛創建這個來展示問題的核心。 – vbence 2011-06-04 09:43:22

+0

那麼,你能證明你實際上試圖解決什麼問題嗎? – Wrikken 2011-06-04 09:46:45

+0

我試過你推薦的'RewriteCond',但沒有區別。我寧願發現這個問題的原因。根據我的經驗,這應該是現在的樣子,但事實並非如此,所以我想知道我忽略了什麼原則。這對我來說比實際問題更重要。 – vbence 2011-06-04 10:27:59