Как я могу перенаправить каталог с помощью htaccess, включая файлы с пробелами в именах
Я имею дело с ситуацией, когда кто-то вручил мне кучу старых файлов на сервере, которые уже имеют множество входящих ссылок непосредственно на них (в основном PDF-файлы). Теперь я организовал файлы, но в другом каталоге. Если раньше это было "домен / руководства / файл", то теперь это "домен / медиа / руководство / файл". Я пытаюсь решить эту проблему с помощью файла htaccess.
Во многих файлах есть пробелы в именах (не то, что я могу контролировать), и поскольку они уже имеют ссылки на них, я не могу просто переименовать их. Я обнаружил, что могу перенаправлять файлы по отдельности, когда в именах есть пробелы, используя такие кавычки, как:
redirect 301 "/manuals/file 123.pdf" "http://www.domain.com/manuals/file 123.pdf"
Тем не менее, существует множество этих файлов, и я подумал, есть ли способ создать регулярное выражение, которое будет обрабатывать пробелы в именах файлов, которые я мог бы использовать для перенаправления всего каталога. Я должен добавить, что некоторые файлы содержат приличные имена файлов без пробелов, некоторые имеют один пробел, а другие более одного пробела. Это не красиво.
Если вы столкнулись с этой проблемой до того, как я буду признателен за ваши советы, у меня заканчиваются идеи.
Благодарю.
3 ответа
Как насчет:
RedirectMatch permanent ^/manuals/(.*)$ http://www.domain.com/media/manual/$1
(.*)
соответствует любому символу после /manuals/
в URL.
Примечание: Redirect
а также RedirectMatch
являются частью mod_alias
не mod_rewrite
(так как вопрос был помечен) так что простите раньше mod_rewrite
Правило я разместил.
Redirect может работать сразу с целыми каталогами.
Redirect permanent /manuals/ http://www.domain.com/manuals/
Тогда вам не нужно беспокоиться о выходе из %20
или любой другой персонаж. Apache перенаправит каждый файл по этому пути в тот же файл под целевым URL.
(RedirectMatch
существует также для сопоставления регулярных выражений; вам не нужно прибегать к этому для этого, хотя.)
Если вам нужны символы для пробелов в URL, вы можете использовать %20
который является кодировкой URL пробела.