【问题标题】:Exclude directory from rewrite rule从重写规则中排除目录
【发布时间】:2015-08-03 18:32:15
【问题描述】:

下面是我的 .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 错误,如果我删除它,我会将我重定向到格式的重写规则。我正在阅读需要将排除重写规则放在我要覆盖的规则之前。我不明白为什么它不起作用以及我错过了什么。

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • doesnt 工作是什么意思?它仍然允许它,否则你得到一个错误?
    【解决方案2】:

    您的 .htaccess 中有语法错误。

    让你的 .htaccess 像这样:

    Options -MultiViews
    RewriteEngine On
    RewriteBase /
    
    # Exclude admin directory    
    RewriteRule ^admin($|/) - [L,NC]
    
    RewriteCond %{REQUEST_URI} !(/$|\.) 
    RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    
    RewriteRule ^privacy$ pages/privacy.php [NC,L]
    
    RewriteRule ^(.+)/(.+)/(.+)$ products.php?q=$3&rewrite=1 [L,QSA]
    
    RewriteRule ^(.*)/(.*)/$ search.php?q=bw:&categoryFilter=$1&genreFilter=$2 [L,B,QSA]
    
    RewriteRule ^(.+)/$ pages/format.php?format=$1 [NC,L]
    

    【讨论】:

    • 有一个错字,已修复。再试一次。
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多