Apache用空格重写URL


Apache Rewrite Urls With Spaces

我目前正在开发一个由以前的开发人员构建的网站。该网站以前曾向订阅者发送过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。请注意,此服务器上有数千个文档,因此这确实需要是动态的。

我尝试了什么

我看了这个,这个和更多,但不能添加更多的链接,因为SO说我没有足够的声誉。

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

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

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

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

o) Cor