我正在研究 Apache 2.4 中的重写规则,其中任何以 .pdf/ 结尾的 URL 都应添加查询参数并将其转换为 .pdf?q=pdf。
例子:http://www.example.com/us/elections.pdf/应该转变为http://www.example.com/us/elections.pdf?q=pdf
我尝试使用以下规则并且成功了
RedirectMatch 301 ^(.*).pdf/ $1.pdf?q=pdf
问题是我们在网站上也有一些链接,如 {hostname}/us/elections.pdf/节点/img.thumbnail.png
为此,上述规则是在前面添加 q=pdf节点并像 {hostname}/us/elections.pdf?q=pdf_node_/img.thumbnail.png 那样进行转换
我怎样才能避免这种情况发生?
我如何才能转换我的规则,使它只对末尾带有 .pdf/ 的链接起作用?
任何帮助都将非常有帮助。
答案1
如果您希望正则表达式仅在以“ .pdf/”结尾时匹配,那么您应该相应地编写正则表达式并包含字符串锚点的结尾。
改变:
RedirectMatch 301 ^(.*).pdf/ $1.pdf?q=pdf
到:
RedirectMatch 301 ^(.*).pdf/$ $1.pdf?q=pdf
注意$在正则表达式的末尾。