我想要的是:
到 301 重定向 /file_new.pdf 到 /file new.pdf (文件和新文件之间的 %20 又名空间)
我知道:
- 我可以依靠使用 mod_rewrite 的 RewriteRule 301,使用该线程中的解决方案:@ mod_rewrite with space in the urls
- 我可以重命名文件以不包含空格并用破折号/下划线替换它们
但是,我个人很好奇如何做到这一点。这是我到目前为止所拥有的:
Redirect 301 /file_new.pdf http://sitename.com/file\ new.pdf
当我调用 configtest 时,conf 文件解析器会引发错误:
重定向需要两个或三个参数,一个可选状态,然后是要重定向的文档和目标 URL
编辑:显然 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。我很肯定alias
并rewrite
已启用。我的 apache 版本是 2.2。