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

Недавно я взял на себя управление сайтом 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/
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
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

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