2013-05-03 63 views
0

我有一個現成的主題爲我的網站。我需要將images/js/css文件夾移動到特定的文件夾。HTACCESS重定向(移動的文件夾) - 遞歸錯誤

目前,它是這樣的:

|- application 
|- assets 
    |- img 
    |- css 
    |- js 
|- system 

的主題是這樣的:在img/CSS/JS文件夾是詮釋他的根文件夾。

由於期望將請求路由到img/css/js文件夾,我在我的.htaccess文件中寫了類似這樣的內容。

RewriteEngine On 

RewriteCond $1 !^(images|robots\.txt|assets) 

RewriteRule img/(.*) /assets/img/$1 [L] 
RewriteRule js/(.*) /assets/js/$1 [L] 

RewriteCond %{REQUEST_URI} ^/system.* 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?/$1 [L] 

但我注意到有一個遞歸發生。從

[Fri May 03 11:56:46 2013] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

我怎麼能避免遞歸。我注意到改變文件夾名稱有幫助,但更喜歡通過.htaccess

我對正則表達式不太擅長,但我記得有些方法可以說不用它。例如,說redirect urls comming for 'img' folder but NOT having 'assets' in it should be redirected to 'assets/img' folder.

順便說一句,你知道這些規則是多麼昂貴的性能明智。我的意思是,這是不是一個好主意。

在此先感謝,並有一個愉快的一天。

回答

1

重寫條件只能被應用到緊隨其後的規則,所以你需要複製的條件爲您的IMGJS規則:

RewriteCond $1 !^(images|robots\.txt|assets) 
RewriteRule img/(.*) /assets/img/$1 [L] 

RewriteCond $1 !^(images|robots\.txt|assets) 
RewriteRule js/(.*) /assets/js/$1 [L] 

或者你可以改變你的模式,包括URI的開頭:

RewriteRule ^img/(.*) /assets/img/$1 [L] 
RewriteRule ^js/(.*) /assets/js/$1 [L] 
+0

偉大的Jon Lin,感謝您的回答。有效! – 2013-05-03 07:10:15