Apache - 使用空格重定向301 pdf到pdf(二进制文件)

时间:2009-10-05 19:58:49

标签: apache mod-rewrite http-status-code-301 mod-alias

我想要的是什么:

  

301重定向/file_new.pdf到   / file new.pdf(%20又名之间的空格   文件和新)

我知道:

  • 我可以依赖使用mod_rewrite的RewriteRule 301,使用此线程的解决方案:@ mod_rewrite with spaces in the urls
  • 我可以将文件重命名为不包含空格,并用短划线/下划线替换它们

但是,我个人很好奇如何做到这一点。这是我到目前为止所做的:

Redirect 301 /file_new.pdf http://sitename.com/file\ new.pdf

调用configtest时,conf文件解析器会抛出错误:

  

重定向需要两个或三个参数,   可选状态,然后是文档   被重定向和目标网址

编辑:显然mod_rewrite和Redirect 301方法对我有用,可能是因为无论出于什么原因他们没有申请,因为该文件实际存在于该位置。

<VirtualHost *:80>
DocumentRoot /www/sitename_com
ServerName site.local
Options -MultiViews

RewriteEngine on
Redirect 301 /pdf/file_new.pdf http://site.local/pdf/file%20new.pdf
RewriteRule ^/pdf/file_new.pdf http://site.local/pdf/file\ new.pdf
RewriteLog "/www/rewrite.log"
</VirtualHost>

在rewrite.log中,它尝试将模式与每个相应的uri / http请求进行匹配。我认为有些东西在它甚至到达mod_alias / mod_rewrite之前就已经控制了。

总而言之,它直接转到浏览器中的file_new.pdf而不是301.我很肯定aliasrewrite已启用。我的apache版本是2.2。

1 个答案:

答案 0 :(得分:5)

Redirect实际上是mod_alias的一部分,而不是mod_rewrite。我很高兴%20工作,你也可以使用引号告诉apache包含空格的路径是重定向到的URL而不是两个单独的项目:

Redirect 301 /pdf/file_new.pdf "http://site.local/pdf/file new.pdf"