Как я могу перенаправить каталог с помощью htaccess, включая файлы с пробелами в именах - PullRequest
0 голосов
/ 12 апреля 2010

Я имею дело с ситуацией, когда кто-то передал мне кучу старых файлов на сервере, которые уже имеют множество входящих ссылок непосредственно на них (в основном PDF-файлы). Теперь я организовал файлы, но в другом каталоге. Если раньше это было «домен / руководства / файл», то теперь это «домен / медиа / руководство / файл». Я пытаюсь решить эту проблему с помощью файла htaccess.

Во многих файлах есть пробелы в именах (я не могу ими управлять), и поскольку у них уже есть ссылки на них, я не могу просто переименовать их. Я обнаружил, что могу перенаправлять файлы по отдельности, когда в именах есть пробелы, используя такие кавычки, как:

redirect 301 "/manuals/file 123.pdf" "http://www.domain.com/manuals/file 123.pdf"

Однако существует множество этих файлов, и я подумал, есть ли способ создать регулярное выражение, которое будет обрабатывать пробелы в именах файлов, которые я мог бы использовать для перенаправления всего каталога. Я должен добавить, что некоторые файлы содержат приличные имена файлов без пробелов, некоторые имеют один пробел, а другие более одного пробела. Это не красиво.

Если вы столкнулись с этой проблемой до того, как я действительно буду признателен за ваш совет, у меня заканчиваются идеи.

Спасибо.

Ответы [ 3 ]

1 голос
/ 12 апреля 2010

А как же:

RedirectMatch permanent ^/manuals/(.*)$ http://www.domain.com/media/manual/$1

(.*) соответствует любому символу после /manuals/ в URL.

Примечание : Redirect и RedirectMatch являются частью mod_alias, а не mod_rewrite (поскольку вопрос был помечен), так что простите ранее опубликованное правило mod_rewrite, которое я опубликовал.

0 голосов
/ 12 апреля 2010

Redirect может работать сразу с целыми каталогами.

Redirect permanent /manuals/ http://www.domain.com/manuals/

Тогда вам не нужно беспокоиться о экранировании пробелов до %20 или любых других символов.Apache перенаправит каждый файл по этому пути в один и тот же файл с целевым URL.

(RedirectMatch также существует для сопоставления с регулярным выражением; вам не нужно прибегать к этому для этого.)

0 голосов
/ 12 апреля 2010

Если вам нужны символы для пробелов в URL, вы можете использовать %20, который является кодировкой URL пробела.

...