【问题标题】:Excluding a path from a htaccess rule从 htaccess 规则中排除路径
【发布时间】:2015-01-13 13:30:52
【问题描述】:

我们的 .htaccesss 文件具有以下规则,这些规则会影响对我们管理页面的访问。

规则设置为允许以下内容:

http://www.example.com/en-gb/section/product/

#Most pages are caught by this so we can use the translated token stored in cms rather than having to fix here
RewriteRule ^([a-zA-Z]{2})-([a-zA-Z]{2})/([a-zA-Z0-9\-_]+)(/?)$                                         index.php?html/pages/$3                     [L,NC]

#Product pages
RewriteRule ^([a-zA-Z]{2})-([a-zA-Z]{2})/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)(/?)$                       index.php?html/pages/$4                     [L,NC]

#Product subscription pages
RewriteRule ^([a-zA-Z]{2})-([a-zA-Z]{2})/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)(/?)$     index.php?html/pages/$5                     [L,NC]

不幸的是,这会影响管理页面,例如http://www.example.com/en-gb/admin 正在触发 404。

基本上,如果路径包含/admin,有什么办法可以忽略上述规则?

我在 RewriteRule 之前尝试过 RewriteCond,但它似乎不起作用。

干杯!

【问题讨论】:

  • 查看您的规则,/en-gb/admin 不应与之匹配,因为您将第三个参数设置为强制。你还有其他规定吗?
  • @JustinIurman 抱歉,这只是一个例子。似乎有 3 条规则正在影响它。我已经更新了原帖。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

感谢@JustinIurman,但很遗憾,我无法得到您的答复。

这是一个比我最终想象的简单得多的解决方案。

我只是将规则更改为以下内容:

+RewriteRule ^([a-zA-Z]{2})-([a-zA-Z]{2})/(?!admin)([a-zA-Z0-9\-_]+)(/?)$

感谢您的帮助。

【讨论】: