2013-10-08 49 views
1

在htaccess文件中,重寫規則是否需要遵循順序?喜歡,長的先,短的最後或類似的東西?或者,可以按任何順序放置它們。我只有幾條規則,比如下面的(大約20條),但這一切都很糟糕。htaccess文件中RewriteRules的順序

RewriteRule ^/?(backend)/(users)/(new|blocked)/([a-z0-9]+)/?$ /blah/users/index.php?type=$2&case=$3&offset=$4 [NC,L] 

回答

1

重寫規則的排序在.htaccess中非常重要。最後需要將最具體的規則放在頂部,並且最通用(全部捕獲)類型的規則。

讓我以身作則。假設你想隱藏.php擴展所有有效.php文件,但要轉發的文件的其餘部分的index.php,那麼你需要先寫PHP隱藏規則是這樣的:

# first try loading PHP file if available 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L,NC] 

# not available then send it to /index.php?file=<file> 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php?file=%{REQUEST_URI}.php [L,QSA] 
+0

我的大多數規則是像我已經在我的問題中提到了...... – Norman

+0

考慮這個規則是'if,elseif,elseif,else'在編碼中。因此,所有其他所有塊都會進入最後。話雖如此,如果你有像if(x = 5),if(x = 6),if(x = 7),if(x = 8)等所有規則,那麼order就不會物。 – anubhava