【问题标题】:Mod Rewrite rule to redirect all pdf request to another locationMod Rewrite 规则将所有 pdf 请求重定向到另一个位置
【发布时间】:2011-09-02 22:56:30
【问题描述】:

我正在尝试清理我们的网站。我正在使用 ISAPI 重写。我已经找到了选择相关文件所需的正则表达式。

^(?!.*?web_content.*?).*?\.pdf

我想重定向所有 pdf 请求以查看 web_content/pdf/。所以我想要的伪规则是

将所有请求重定向到尚未请求的 pdf 网页内容/pdf。删除原始文件夹路径。 /somefolder/this/mycool.pdf ==> /web_content/pdf/mycool.pdf

我的问题是我将如何实际创建 Mod 重写规则?我不知道如何正确执行替换命令。我也希望这条规则不会影响我们网站上的外部 pdf 链接。

【问题讨论】:

    标签: regex mod-rewrite url-rewriting


    【解决方案1】:

    这应该可行:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/web_content/pdf/
    RewriteRule ^(.+\.pdf)$ /web_content/pdf/$1 [L]
    

    Helicon ISAPI_Rewrite v3 与 Apache 的 mod_rewrite 几乎相同(除了一些高级的东西),因此几乎所有适用于 Apache 的规则都可以在这里使用。

    【讨论】:

    • 非常感谢,这应该可以解决我的问题。是否有一个很好的明确参考资料可供我阅读? Apache 的 ref 对我来说很难理解。尤其是在规则和条件之间使用反向引用。
    • 好问题——但我个人不知道——我自己通过阅读 ISAPI_Rewrite 文档并遵循他们的示例 (helicontech.com/isapi_rewrite/doc/examples.htm) 在真实站点上实现重写来学习所有这些。其余的“慢慢地”在修改和创建更复杂的规则并使用正则表达式之后获得经验。我只使用了官方文档和一些在谷歌搜索后发现的充满食谱/示例的随机文章。
    • 处理订单流程图才是真正让我困惑的地方。真的是阿帕奇吗?真的?。 httpd.apache.org/docs/2.0/mod/mod_rewrite.html
    • 看来你所拥有的是完全正确的。我希望能够使用线锚。但是,您列出的规则不起作用。
    • 究竟是什么不起作用?它在我的开发盒上工作正常(我没有 pdf 文件但 mp3,文件夹名称不同,但这是唯一的区别)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多