Недавно я взял на себя управление сайтом WordPress для работы и немного почистил его. Одна вещь, которую я сделал, — переместил некоторые важные файлы в определенные папки, чтобы упростить обслуживание версий файлов. Я обновил все внутренние ссылки на новый путь.
К сожалению, у нас есть пользователи, которые добавили в закладки старые местоположения и получают ошибку 404 при попытке повторно загрузить файлы. Масштабы этого значительны, и мне нужно найти способ указать старые ссылки на новые.
Проблемы:
Вот некоторые примеры:
СТАРЫЙ:
НОВЫЙ:
Что я ищу: Способ поиска подмножества (на основе начала имени файла) определенной папки и только перенаправления/перезаписи его в новую папку. То есть уникальной особенностью файлов является начало имени файла, когда он находится в 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/
Вы просто проверяете соответствующий шаблон с помощью 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
, но не пока тестирование
Большое спасибо! Есть ли причина для выбора перезаписи, а не перенаправления? Я хотел бы, чтобы клиенты увидели новый путь. Я думаю об использовании: RedirectMatch 301 ^/wp-content/uploads/2019/01/(L-[^/]+)$ /uploads/3Dmodels/Product1/$1
Я неправильно понял ваш комментарий, RewriteRule
можно использовать как для перезаписи, так и для перенаправления. Это зависит от флага R
.
Получил, большое спасибо! Я только что понял, что имена файлов также были изменены, поэтому /wp-content/uploads/2016/08/HR59-K-F-D.dwg
теперь должно быть /uploads/3Dmodels/Product1/HD59-K-F-D.dwg
(обратите внимание на изменение имени файла с «R» на «D»). Как я могу найти «HR59-», но заменить на «HD59-» в перенаправлении, а не передавать то же имя файла?
Я понял: RedirectMatch 301 ^/wp-content/uploads/2016/08/HR59-([^/]+)$ /uploads/3Dmodels/Product1/HD59-$1
@Marco Вы отметили вопрос мод-переписать, но
RedirectMatch
работает так же хорошо.