Apache - Перенаправление 301 pdf в pdf с пробелами ( двоичный файл )
-
19-09-2019 - |
Вопрос
Чего я хочу:
В 301 перенаправить /file_new.pdf на /file new.pdf (%20, иначе пробел между file и new )
Я осознаю, что:
- Я могу положиться на RewriteRule 301, который использует mod_rewrite, используя решение из этого потока:@ mod_rewrite с пробелами в URL-адресах
- Я могу переименовать файл так, чтобы он не содержал пробелов, и заменить их тире / подчеркиванием
Тем не менее, лично мне любопытно, как можно это сделать.Вот что у меня есть на данный момент:
Redirect 301 /file_new.pdf http://sitename.com/file\ new.pdf
Анализатор файла conf выдает ошибку, когда я вызываю configtest:
Перенаправление принимает два или три аргумента, необязательный статус, затем документ, который нужно перенаправить и 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.
Решение
тот самый Redirect
на самом деле является частью mod_alias, а не mod_rewrite.я рад, что %20 сработал, и вы также можете использовать кавычки, чтобы сообщить apache, что путь, включающий пробел, является URL-адресом для перенаправления, а не двумя отдельными элементами:
Redirect 301 /pdf/file_new.pdf "http://site.local/pdf/file new.pdf"