Как перенаправить подмножество файлов в папке в другую папку?

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

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

Проблемы:

  1. Старые папки по-прежнему содержат файлы, которые передаются в другие части сайта, поэтому я не могу перенаправить всю папку.
  2. Есть сотни файлов.
  3. Было около 3 папок, содержащих файлы для 14 различных продуктов (не уникальных от> до местоположений).

Вот некоторые примеры:

СТАРЫЙ:

  • /wp-content/uploads/2016/08/HR59-K-F-D.dwg
  • /wp-content/uploads/2016/08/HR59-K-F-D.dwg
  • /wp-content/uploads/2016/08/HR59-A-F-D.шаг
  • /wp-content/uploads/2019/01/L-A-A-B.igs
  • /wp-content/uploads/2019/01/L-A-B-B.sldprt
  • /wp-content/uploads/2019/01/MA-C-B.x_t
  • /wp-content/uploads/2019/01/M-A-C-B.dxf

НОВЫЙ:

  • /uploads/3Dmodels/Product1/HR59-K-F-D.dwg
  • /uploads/3Dmodels/Product1/HR59-A-F-D.step
  • /uploads/3Dmodels/Product2/L-A-A-B.igs
  • /uploads/3Dmodels/Product2/L-A-B-B.sldprt
  • /uploads/3Dmodels/Product3/M-A-C-B.igs
  • /uploads/3Dmodels/Product3/M-A-C-B.dxf

Что я ищу: Способ поиска подмножества (на основе начала имени файла) определенной папки и только перенаправления/перезаписи его в новую папку. То есть уникальной особенностью файлов является начало имени файла, когда он находится в 1 конкретной папке. Например:

ПРИМЕР 1:

For files in: /wp-content/uploads/2016/08/
That start with: HR59-
Redirect to: /uploads/3Dmodels/Product1/

ПРИМЕР 2:

For files in: /wp-content/uploads/2019/01/
That start with: L-
Redirect to: /uploads/3Dmodels/Product2/

ПРИМЕР 3:

For files in: /wp-content/uploads/2019/01/
That start with: M-
Redirect to: /uploads/3Dmodels/Product3/
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы просто проверяете соответствующий шаблон с помощью RewriteRule

RewriteRule ^wp-content/uploads/2016/08/(HR59-[^/]+)$ /uploads/3Dmodels/Product1/$1 [R,L]
RewriteRule ^wp-content/uploads/2019/01/(L-[^/]+)$ /uploads/3Dmodels/Product2/$1 [R,L]
RewriteRule ^wp-content/uploads/2019/01/(M-[^/]+)$ /uploads/3Dmodels/Product3/$1 [R,L]

Когда все работает как положено, вы можете заменить R,L на R=301,L, но не пока тестирование

@Marco Вы отметили вопрос мод-переписать, но RedirectMatch работает так же хорошо.

Olaf Dietsche 22.05.2019 21:03

Большое спасибо! Есть ли причина для выбора перезаписи, а не перенаправления? Я хотел бы, чтобы клиенты увидели новый путь. Я думаю об использовании: RedirectMatch 301 ^/wp-content/uploads/2019/01/(L-[^/]+)$ /uploads/3Dmodels/Product1/$1

Marco 22.05.2019 21:05

Я неправильно понял ваш комментарий, RewriteRule можно использовать как для перезаписи, так и для перенаправления. Это зависит от флага R.

Olaf Dietsche 22.05.2019 21:05

Получил, большое спасибо! Я только что понял, что имена файлов также были изменены, поэтому /wp-content/uploads/2016/08/HR59-K-F-D.dwg теперь должно быть /uploads/3Dmodels/Product1/HD59-K-F-D.dwg (обратите внимание на изменение имени файла с «R» на «D»). Как я могу найти «HR59-», но заменить на «HD59-» в перенаправлении, а не передавать то же имя файла?

Marco 22.05.2019 21:19

Я понял: RedirectMatch 301 ^/wp-content/uploads/2016/08/HR59-([^/]+)$ /uploads/3Dmodels/Product1/HD59-$1

Marco 22.05.2019 22:24

Другие вопросы по теме