2010-01-24 161 views
1

我想在我的htaccess中添加一個rewrite Condition,如果調用php文件返回「true」,則返回true,否則返回false。我正在使用RewriteCond中的-U開關運行子請求,如果條件不滿足,PHP腳本將返回404錯誤,從而觸發rewriteCond。Apache RewriteCond來自PHP請求的結果

我的目標是與PHP網站並行運行URL縮短服務。

這裏是我當前的.htaccess

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond /smallurl/%{REQUEST_URI} !-U 
RewriteRule (.*) index.php/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) smallurl/$1 [L] 

什麼是要實現這樣的事情最好的做法?推薦,我應該知道的事情?有沒有辦法避免子請求,或者至少加快速度?

謝謝

+0

我會縮短文字'smallurl'第一個;) – Franz 2010-01-24 18:05:52

+0

是的,但是整點就是它沒有出現在URL – jfoucher 2010-01-24 20:03:29

+0

對。我很愚蠢,對不起。應該更仔細地閱讀代碼;) – Franz 2010-01-24 21:51:48

回答

0

您可以使用RewriteMapREQUEST_URI傳遞到PHP文件,它返回的結果 - 我認爲這將有RewriteCond工作,雖然你可能會發現它的作品更好,因爲一個標準的RewriteRule

該規範是在http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteMap

基本上,你的PHP文件需要從PHP讀取://標準輸入和輸出結果到stdout

抱歉,我不能提供更多幫助,這不是我長久以來所做的事情!

+0

好的,謝謝,我一定會嘗試。我可能甚至不使用PHP文件來返回結果,但可能是一個簡單的shell腳本或命令,然後它不太平臺獨立... 無論如何感謝您的答案 – jfoucher 2010-01-26 06:00:20