2011-07-19 62 views
0

注意:下面的代碼被一個RewriteCond/RewriteRule包圍,它跳過了這些情況,所以在重定向發生後它們不會再次運行。mod_rewrite詞法比較

爲什麼我不能得到這個測試是真的?

RewriteCond %{REQUEST_FILENAME} ="/unique/test/test" 
RewriteRule ^.*$ /match [R=301,L] 

我outputing與以下行的一切,我可以清楚地看到什麼是REQUEST_FILENAME:

RewriteRule (.*) /test$1-filename-%{REQUEST_FILENAME}-URI-%{REQUEST_URI} [R=301,L] 

,但我不能讓它匹配。

我本來試圖做這樣的事情來測試是否已經從原始的URI修改的路徑或沒有,但看到我不能讓上面的測試屬實,這肯定是不行的:

RewriteCond %{REQUEST_FILENAME} =%{REQUEST_URI} 

回答

2

RewriteCond中,變量只在第一個參數中擴展。因此,您的RewriteCond實際上是將REQUEST_FILENAME的值與文字字符串%{REQUEST_URI}進行比較。

要你何意,你需要做一些伎倆:

RewriteCond %{REQUEST_FILENAME}#%{REQUEST_URI} ^([^#]+)#\1$ 
+0

感謝,如果我理解這個正確的這個條件比較REQUEST_FILENAME#REQUEST_URI到REQUEST_FILENAME#REQUEST_FILENAME給我,我想REQUEST_URI到REQUEST_FILENAME比較。 –

+0

上面有錯嗎?管不應該是一英鎊? –

+0

@Derek Litz:是的,你說得對。 – Gumbo