【问题标题】:Apache Rewrite Urls With SpacesApache 用空格重写 URL
【发布时间】:2013-08-19 20:15:03
【问题描述】:

我目前正在开发一个由以前的开发人员构建的网站。 该网站之前已向订阅者发送了链接,其中 url 文件名中有空格,例如 http://website.com/docs/this is a pdf.pdf。我现在已经修复了这些链接,因为它们是在生成链接时使用 php url 编码生成的,因为特别是 Internet Explorer 用户没有在 linux 服务器上找到该文件,因为文件名中有空格(chrome 和 FF 通过正确插入%20 到 url 中的空格中)。

我目前正在尝试找到一种方法来使用 .htaccess 重写这些包含空格的 url 以重定向到正确的 url。例如,如果用户请求http://website.com/docs/this is a pdf.pdf,.htaccess 将重定向到http://website.com/docs/this%20is%20a%20pdf.pdf。请注意,此服务器上有数千个文档,因此它确实需要是动态的。

我尝试了什么?

我查看了 thisthis 等等,但无法添加更多链接,因为 SO 说我没有足够的声誉。

这些选项似乎表明,如果您事先知道文件名是什么,这是可能的。我需要这是动态的。有人有什么想法吗?

【问题讨论】:

  • 究竟是哪个IE版本有这个问题?有问题的请求到底是什么样的?如果 IE 不会使用正确编码的 URI 发送请求,那么浏览器可能会寻找像 /docs/this 这样的片段。
  • 你在哪个版本的IE上测试过?

标签: php .htaccess


【解决方案1】:

例如,将转义的空格放在大括号内..

RewriteRule ^(.+)(\ )(.+)(\ )(.+)(\ )(.+)\.pdf /$1-$3-$5-$7.pdf

会捕获对“任何四字文件.pdf”的任何请求并将其重写为 /any-four-word-file.pdf

;o) 关联

【讨论】:

  • 所以用“?”使每个部分都是可选的字符.. (.+)? ;o) Cor
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多