2012-06-10 73 views
1

我有一個網站,我想重定向所有請求接受1目錄路徑。htaccess密碼保護的目錄和mod_rewrite RerwriteCond

http://mysite.com/application
http://mysite.com/application/templates
http://mysite.com/application/admin(密碼保護)

RewriteCond %{REQUEST_URI} !^\/application 
RewriteRule ^.*$ http://mynewsite.com [R=307] 

.htaccess我重寫引擎工作正常,訪問其有密碼保護的/ admin目錄時除外。當我嘗試請求它時,我被重定向。如果我在/admin文件夾中重命名.htaccess。它工作正常。我懷疑瀏覽器(FF)正在請求與重定向匹配的另一個url。我如何保持目錄密碼保護,但不重定向?

+0

螢火蟲(https://addons.mozilla.org/fr/firefox/addon/firebug/)會幫助你驗證你的假設。但是,我已經設置了一個與您的配置相匹配的測試服務器,並且在此處運行良好。還有其他的東西必須踢。 – RandomSeed

+0

感謝您的建議。我無法很快得到螢火蟲的工作,但我想像它可能會或可能沒有告訴我發生了什麼,如果重定向在返回瀏覽器之前達到規則。你確實幫助我開始思考其他方法,所以非常感謝。 – Nick

回答

3

加入:

RewriteCond %{REQUEST_URI} !401 

現在,它的工作原理。我相信這是由於預先分配了4XX和5XX頁面重定向的共享Web主機配置。所以,那就是發生了什麼。 !401並不完美,但對於我簡單的應用程序來說,它的工作原理。我覺得這樣的事情會更好捕捉401作爲URI的開始(模式是未經測試):

RewriteCond %{REQUEST_URI} !^\/401 
+0

謝謝你解決了我的問題。我試圖在使用mod_rewrite時使用密碼保護dir,但由於某種原因,它忽略了RewriteCond%{REQUEST_FILENAME}!-d規則。這固定它。乾杯 –