2014-01-19 166 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]