【问题标题】:Rewrite Condition partial match causing problems重写条件部分匹配导致问题
【发布时间】:2012-03-02 15:18:49
【问题描述】:

我在 ExpressionEngine 站点根目录的 .htaccess 文件中有以下重写规则,以删除 URL 的 index.php 部分...

RewriteEngine on 
RewriteCond $1 !^(resources|media|images|js|css|fonts|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

效果很好。

但是,客户现在想要一个名为“媒体中心”的页面,其 URL www.domain.com/media-centre 被忽略,因为“媒体”正在触发重写条件中的匹配。

我如何告诉它忽略“媒体”而不是“媒体中心”?

谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite expressionengine


    【解决方案1】:

    也许在末尾添加一个$

    RewriteCond $1 !^(resources|media|images|js|css|fonts|favicon\.ico|robots\.txt|index\.php)$ [NC]
    

    或者也许只是明确地允许“媒体中心”:

    RewriteCond $1 ^(media-centre) [OR]
    RewriteCond $1 !^(resources|media|images|js|css|fonts|favicon\.ico|robots\.txt|index\.php) [NC]
    

    【讨论】:

    • 不,这使它递归不断添加index.php,直到它崩溃
    • 感谢 Manish,这正是我试图编写的逻辑,我只是​​无法弄清楚语法。目前运行良好。
    • 条件正在停止资源子目录等被映射到 index.php 所以为什么不!^(resources/|media/|images/...
    • @TerryE 为什么这么明显的东西很难被发现?!这也很有效。感谢您提供替代解决方案。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多