2014-01-19 223 views
-3

我無法使.htaccess文件正常工作,無法找出我出錯的地方。我本來有:HTACCESS不按預期方式工作

RewriteEngine On 
RewriteBase/

# ---- Pages ---- 
RewriteRule ^$ index.php [L] 
RewriteRule ^home$ index.php [L] 
RewriteRule ^logout$ logout.php [L] 
RewriteRule ^contact$ contact.php [L] 
RewriteRule ^products/([^/]*)$ product.php?product=$1 [L] 
RewriteRule ^([^/]*)$ products.php?category=$1 [L] 

所有這些按預期工作,直到我添加了最後一條規則。我想要一切其他尚未匹配去products.php。當我補充說,不過,一切都開始匹配規則,甚至認爲應該上述規則匹配的東西,終止重寫過程

(因爲l標誌的)然後我加入

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

高於去年規則,似乎在做的伎倆,但然後在我的管理員目錄(/admin/)停止正常工作(沒有重寫任何管理員的東西,所以/admin/index.php永遠不會被重寫,例如)。

任何想法?

回答

2

您可以嘗試在/admin/.htaccessRewriteCond %{REQUEST_URI} !(admin) [NC]RewriteEngine Off只是你的RewriteRules之前排除admin目錄

+0

RewriteEngine敘述關完美!多謝,夥計。 – Michael

0

您可以從進一步重寫這樣跳過admin目錄:

RewriteEngine On 
RewriteBase/
RewriteRule ^admin(/|$) - [L] 

RewriteRule ^$ index.php [L] 
RewriteRule ^home$ index.php [L] 
RewriteRule ^logout$ logout.php [L] 
RewriteRule ^contact$ contact.php [L] 
RewriteRule ^products/([^/]+)/?$ product.php?product=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ products.php?category=$1 [L]