Apache - Перенаправление 301 pdf в pdf с пробелами ( двоичный файл )

StackOverflow https://stackoverflow.com/questions/1522068

Вопрос

Чего я хочу:

В 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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top