从重写规则中排除目录

时间:2015-05-21 21:35:08

标签: apache .htaccess mod-rewrite url-rewriting

下面是我的.htaccess文件。我试图排除应用于/ admin /文件夹的重写规则,但是经过一个小时的研究和尝试各种代码后,我已经到了墙上。

Options -MultiViews
RewriteEngine On

RewriteBase /

# Exclude admin directory    
RewriteRule ^(admin|admin)($|/) - [L]

RewriteRule ^privacy$ pages/privacy.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)/(.*)/(.+)$ products.php?q=$3&rewrite=1&%{QUERY_STRING} [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/$ search.php?q=bw:&categoryFilter=$1&genreFilter=$2%{QUERY_STRING} [L,B]

RewriteRule ^(.*)/$ pages/format.php?format=$1 [NC,L}   

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

上面的代码带来内部500错误,如果我删除它会将我重定向到格式的重写规则。我在读这个排除重写规则需要放在我要覆盖的规则之前。我不明白为什么它不起作用,我错过了什么。

感谢。

2 个答案:

答案 0 :(得分:0)

尝试以这种方式编写规则。

# Exclude admin directory    
RewriteRule ^admin/?$ - [L]

答案 1 :(得分:0)

您的.htaccess中存在语法错误。

让你的.htaccess像这样:

int n;
if ((n = read(input, buffer_header, 4)) > 0) {
    image_width = bytesToInt(buffer_header);
} else if (n == -1) {
    perror("read");
} else {
    printf("EOF\n");
}