我在ManagedFusion設置文件(類似於.htaccess)中使用mod_rewrite,並且我想將所有傳入請求轉發到服務器上的另一個端口,除了幾個文件夾。使用.htaccess和mod_rewrite重定向目錄幾個例外
到目前爲止,我有這個(與文件夾的用戶界面,形式,clientsystem和被忽略的小部件)
RewriteEngine On
RewriteCond %{REQUEST_URI} !ui$
RewriteCond %{REQUEST_URI} !forms$
RewriteCond %{REQUEST_URI} !clientsystem$
RewriteCond %{REQUEST_URI} !widgets$
RewriteRule ^/(.*) http://localhost:8050/$1 [P,L]
這種精細的工作,只要這些例外目錄不存在,創建然而,當他們, rewriteengine只會再次觸發,在這種情況下,它會匹配規則,因此最終轉發給另一個端口。
我該如何解決這個問題?
另一個問題,如果我想要像'?file = bla'這樣的查詢也被轉發,這是否會像這樣工作?
編輯:這是我結束了:
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^ui
RewriteCond $1 !^forms
RewriteCond $1 !^clientsystem
RewriteCond $1 !^widgets
RewriteRule ^/?(.*) http://localhost:8050/$1?%1 [P,L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^ui
RewriteCond $1 !^forms
RewriteCond $1 !^clientsystem
RewriteCond $1 !^widgets
RewriteRule ^/?(.*) http://localhost:8050/$1 [P,R]
有些冗餘,但它的作品。
關於rewriterule中的regexp備註:我認爲你不需要首先/之後^。如果你想確定,追加?之後/所以它總是匹配,有或沒有/作爲第一個字符。 – 2010-06-02 12:29:50