2015-06-01 32 views
0

我有一個重寫引導從DIR請求/至DIR /應用程序/根目錄/mod_rewrite的文件存在與正則表達式條件一起

的問題是,在DIR /應用/根目錄我有以下條件:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [QSA,L] 

這是說文件不存在創建一個無限循環,因爲它無法找到index.php。我相信問題在於它在!-f條件下搜索dir/app/webroot/dir /index.php而不是dir/app/webroot/index.php。

我該如何處理條件中的正則表達式,如:^ dir /(.*)$,以便我可以只使用頁面(在dir /之後是什麼)來糾正路徑?

我至今是:

RewriteCond %{REQUEST_URI} ^/dir/(.*)$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/dir/app/webroot/%1 !-f 
RewriteRule ^(.*)$ index.php [QSA,L] 

這種固定的無限循環,但現在它總是被重定向到的index.php。你看到我犯了什麼錯誤嗎?

回答

1

如果該文件位於webroot,那麼它不會查找webroot/dir - 它根本沒有理由。

我用下面的文件進行測試,它似乎爲我工作:

/dir/.htaccess

RewriteEngine on 
RewriteBase /dir/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} ^/dir/ 
RewriteRule ^(.*)$ app/webroot/$1 [L] 

​​:

RewriteEngine on 
RewriteBase /dir/app/webroot/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [L] 
+0

是的,謝謝以確認。使用trace4日誌級別,我可以看到問題在別處。 – Devon