2011-04-05 84 views
0

在我重定向用戶之前,我想檢查重定向到文件是否確實存在。現在,當我添加當前註釋掉的位時,下面的代碼仍然正常工作,它完全跳過了重寫規則。mod_rewrite狀態不能觸發?

<IfModule mod_rewrite.c> 
    RewriteEngine on  
    RewriteBase/ 
    # RewriteCond cache/$1.html -f  
    RewriteRule ^([^/]+)/?([^/]*) cache/$1.html [L]  
<IfModule>  

香港專業教育學院現在已經掙扎在這三天,任何幫助將不勝感激!

+0

我不認爲$ 1在運行的RewriteCond的時間被填充。你可能需要在這之前添加另一個RewriteCond來填充$ 1,或者類似的東西。 – 2011-04-05 21:10:58

+0

弗蘭克法默,如果你會提供額外的規則作爲答案.. – Mohammad 2011-04-05 21:16:01

回答

0

# RewriteCond cache/$1.html -f$1沒有引用任何內容,所以它會跳過你的RewriteRule。

嘗試

RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}.html -s 

RewriteCond Documentation

+0

我會測試這個,只要我回家,但我想知道你的規則是否最後需要一個.html,因爲我實際上是將這個確切模式,'example.com/user'重定向到'example.com/cache/user.html' – Mohammad 2011-04-05 21:24:56

+0

並且謝謝btw! – Mohammad 2011-04-05 21:25:18

+0

I'已經試過這個,並且它不能工作,不幸的是..我不能說出爲什麼。有沒有辦法導出規則指向的地方,進行手動檢查? – Mohammad 2011-04-06 05:55:30

-1

我的第一印象是檢查是否存在緩存/ $ 1.html,並且您不是意外地從myserver.com/index.html - >轉到 - > myserver.com/cache/index.html.html

+0

OOF,低調投票,沒有理由。太粗魯了。 :( – tamarintech 2011-04-05 21:04:34

+0

緩存/ $ 1.html確實存在,因爲RewriteRule顯示文件,當我刪除的條件,我認爲,因爲我已經解決了重定向到文件相同的情況下預先檢查的條件,它應該檢查相同的文件...但由於某種原因,它沒有在條件中發現它,所以令人困惑。 – Mohammad 2011-04-05 21:06:47

+0

我沒有投票你btw。 – Mohammad 2011-04-05 21:07:29