【问题标题】:RedirectMatch and Regex TomfooleryRedirectMatch 和正则表达式 Tomfoolery
【发布时间】:2009-04-16 13:52:05
【问题描述】:

我正在尝试将所有对 /library/ 的请求重定向到外部 URL,除非请求 .pdf 文件。例如www.mysite.com/library/section 应该重定向到 www.externalsite.com 但 www.mysite.com/library/docs/some_pdf.pdf 应该在没有重定向的情况下提供 PDF 文件。这是我所拥有的:

RedirectMatch permanent /library/!(.*\.pdf) http://www.externalsite.com/

【问题讨论】:

    标签: regex apache .htaccess


    【解决方案1】:

    试试这个:

    RedirectMatch permanent /library/(?!.*\.pdf) http://www.externalsite.com/
    

    【讨论】:

    • 我认为锚定“.pdf”是件好事:(?!.*\.pdf(?:\?|$))
    • 有趣的是,mod_alias 的文档说它只支持“标准”正则表达式——“(?!..)”负前瞻是 Perl 扩展。哦,好吧,很高兴知道它们也有效! +1。
    • 在 Apache 2.2 中,文档指定 PCRE:httpd.apache.org/docs/2.2/glossary.html#regex。不确定之前是否已经出现这种情况,但只是没有在 2.0 中记录 — 什么“标准”正则表达式? BRE?
    • @bobince:这很有帮助,谢谢——我一定一直在看 2.0 甚至 1.3 文档。是的,可悲的是,我知道没有普遍认可的“标准”正则表达式......
    【解决方案2】:

    您可能想要匹配整个路径而不是子字符串:

    RedirectMatch permanent ^/library/(?!.*\.pdf)$ ...
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      相关资源
      最近更新 更多