【问题标题】:Non-working htaccess Rewriterule to match end of URL非工作 htaccess Rewriterule 以匹配 URL 的结尾
【发布时间】:2013-01-13 17:13:14
【问题描述】:

我正在尝试编写一个 .htaccess 规则来重定向所有以 Fizzle/xxxx_showabstract 结尾的 URL(其中 xxxx 可以是任意字符串)。我写的规则是:

RewriteRule .*/Fizzle/(.*)_showabstract$ /abstractdisplay.php?journal=Fizzle&article=$1

但这对我来说虽然简单明了,但似乎与预期的 URL 不匹配。我究竟做错了什么?所有帮助将不胜感激。

【问题讨论】:

  • 任意xxxxx中允许使用哪些字符?正如你所拥有的,它会匹配 Fizzle/other/dir/_showabstract 之类的东西,我认为你不需要。
  • 另外请发布一个它现在匹配的示例,它不应该匹配(加上您定义的任何其他重写规则)
  • 不,我绝对不希望它与您给出的示例相匹配,因此我的 (.*) 需要进一步限制。然而,问题不是我的模式匹配得太多,而是它根本不匹配任何东西(即 Apache 似乎忽略了它并继续后续的模式)。你知道吗?我现在意识到这似乎是我的 Mac 上运行的 MAMP Apache 的问题;在我的 Unix 服务器上,同样的模式工作得很好!
  • 嗯,我注意到你没有[L],你应该在该规则的末尾。确保你有RewriteEngine On

标签: regex .htaccess mod-rewrite


【解决方案1】:

这可能有效。

RewriteRule ^.*/Fizzle/([^/]*)_showabstract$ /abstractdisplay.php?journal=Fizzle&article=$1 [L]

您遇到的问题可能是由执行正则表达式的特定顺序引起的。但是如果你使用^,它只会匹配一个完整的URL。

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2010-10-02
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多