Рейтинг:0

Apache, перенаправление для перемещенного каталога

флаг in

На нашем веб-сервере каталог был «скопирован» из одного места в другое. Теперь исходное местоположение исчезло, однако я получаю запросы на перенаправление на новое местоположение.

Я полагаю, что mod_rewrite был бы лучшим способом сделать это, хотя я не возражаю против использования других методов, если они доступны. Схема URL такая.

Старый URL: www.exampleurl.com/subdir1/olddirectory/subdir2
Новый URL-адрес: www.exampleurl.com/subdir1/newdirectory/subdir2.

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

Мы уже используем mod_rewrite для перенаправления всего трафика через SSL/TLS, так что продолжать это, вероятно, будет лучше всего.

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

Сайт распределен между двумя конфигурациями VirtualHost в двух файлах, один для HTTP и один для HTTPS. HTTP VirtualHost содержит условие и правило mod_rewrite для перенаправления всего трафика на него на порт HTTPS. Рассматриваемые каталоги настраиваются в отдельных файлах внутри conf-enabled. Оба включают объявление псевдонима и область каталога. Псевдоним необходим, так как фактические файлы находятся в каталогах /mnt при монтировании NFS.

флаг kz
Где именно вы используете эти директивы? _В стороне:_ Если эти директивы находятся в конфигурации сервера, то вам, вероятно, не следует_ "использовать mod_rewrite для перенаправления всего трафика через SSL/TLS". YMMV.
Chris Woelkers avatar
флаг in
Поскольку исходный каталог исчез, директивы будут помещены в конфигурацию сервера.
Рейтинг:1
флаг kz

Используя mod_rewrite, вы можете сделать что-то вроде этого:

RewriteRule ^/?(subdir1)/olddirectory(?:$|/)(.*) https://www.example.com/$1/newdirectory/$2 [R=301,L]

Вышеперечисленное будет перенаправлено следующим образом:

  • /subdir1/старый каталог к /subdir1/новый каталог/
  • /subdir1/старый каталог/ к /subdir1/новый каталог/
  • /subdir1/olddirectory/<что-то> к /subdir1/новый каталог/<что-то>

И перенаправляет на HTTPS + каноническое имя хоста, поэтому можно разместить перед ваш существующий канонический редирект, чтобы свести к минимуму количество редиректов.

Сначала проверьте с 302 (временной) переадресацией, чтобы избежать проблем с кэшированием.

Chris Woelkers avatar
флаг in
Вы упоминаете размещение перенаправления перед существующим каноническим перенаправлением. Существующее перенаправление находится в файле конфигурации виртуального хоста http, и есть еще один файл конфигурации виртуального хоста для https. Будет ли новое перенаправление размещено в одном из них или в обоих? Или, возможно, в своем собственном файле?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.