【问题标题】:One Rewrite Rule Works... Another Almost Identical Rule Does Not一个重写规则有效……另一个几乎相同的规则无效
【发布时间】:2017-05-04 02:24:40
【问题描述】:

也许有人可以告诉我为什么我的 .htaccess 文件中的以下内容行为异常:

RewriteRule    ^brand/b([0-9]+)/?$    articles.php?id=b$1    [NC,L]
RewriteRule    ^brand/h([0-9]+)/?$    categories.php?id=h$2    [NC,L]

有了这些规则,这

example.com/brand/b1234

重定向到

example.com/articles.php?id=b1234

但是这个

example.com/brand/h1234

不重定向到

example.com/categories.php?id=h1234

应该如此。

我是否从 .htacess 中的代码中遗漏了任何会导致一个工作但另一个不能工作的内容?

谢谢!

【问题讨论】:

  • 我怀疑在您的第二个目的地使用$1 而不是$2,因为该数字指的是正则表达式中您只有1 个的捕获组。
  • 这是我的第一个想法,因为我不确定它应该是哪个,但无论是 1 美元还是 2 美元都行不通。
  • “重定向到” - 你真的是指“重定向”吗?还是“重写”?如果您看到 redirect 那么这可能是一个较早的(错误的)cached 重定向并且这些规则都没有实际工作?!

标签: .htaccess url-rewriting


【解决方案1】:

这样试试吧,

# incoming request neither file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^brand/b([0-9]+)/?$ articles.php?id=b$1 [NC,L]
RewriteRule ^brand/h([0-9]+)/?$ categories.php?id=h$1 [NC,L]

您确实必须投入 1 美元而不是 2 美元。

【讨论】:

  • 我完全复制并粘贴了它,但它仍然不起作用。到底是什么?
  • 您还有其他规则吗?您遇到了什么错误?
  • 不,目前整个 .htaccess 文件中没有其他内容。它只是不起作用,第一条规则完美运行,但我得到的只是死链接,而第二条规则应该重写,但事实并非如此。
  • 做一件事,而不是类别尝试重写到文章的所有规则进行调试。
  • 旁白:那些RewriteCond指令只适用于第一个RewriteRule
猜你喜欢
  • 2018-08-29
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2017-04-29
相关资源
最近更新 更多