Что я хочу:
На 301 перенаправить /file_new.pdf на
/ file new.pdf (% 20, то есть расстояние между
файл и новый)
Я знаю, что:
- Я могу положиться на RewriteRule 301, который использует mod_rewrite, используя решение из этой темы: @ mod_rewrite с пробелами в URL
- Я могу переименовать файл, чтобы в нем не было пробелов, и заменить его на дефисы / подчеркивания
Однако мне лично любопытно, как можно это сделать. Вот что у меня есть:
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.
Таким образом, чтобы подвести итог, он идет прямо к файлу file_new.pdf в браузере, а не 301. Я уверен, что alias
и rewrite
включены. Моя версия apache 2.2.