Назад | Перейти на главную страницу

Сложный мод-перезапись

У меня есть требование от клиента выполнить некоторые конкретные перенаправления (часть списания старого сервера на новый). Я бился об это головой, и это сводит меня с ума!

Фактически, мне нужно сделать две модификации .htaccess одновременно. Я ожидаю, что это будет что-то действительно простое, но я перепробовал все, что мог придумать, так что пора спросить совета.

Мне нужно сделать следующее:

Чтобы еще больше усложнить, это повторяется из-за того, что веб-ресурсы могут находиться в разных местах новой папки (newfolder1, newfolder2, newfolder3).

На данный момент мой сегмент .htaccess выглядит так:

    <IfModule mod_rewrite.c>
       RewriteEngine on

       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder1/$1"            [L]
       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder2/$1"            [L]
       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder3/$1"            [L]
       RewriteRule   "^"  "-"  [PT]

Это отлично работает для перенаправления папки но это работает только если какой-то веб-ресурс еще не содержит .html.

Я пытался:

RewriteRule "%{REQUEST_URI}[^.html]" "%{DOCUMENT_ROOT}/newfolder1/$1"  [L]
RewriteRule "^(.*).html$" "%{DOCUMENT_ROOT}/newfolder1/$1"  [L]

и много вариаций на этот счет, но я никуда не денусь.

Итак, как оказалось, Wordpress (новая система) сделает большую часть тяжелой работы со мной, и я лаял не на то дерево.

В Старый URL (http://example.com/oldfolder/some-web-resource.html) имеет расширение html, и из-за ошибки я понял, что это единственное, что мне нужно изменить - Wordpress заменит 'имя папки' для меня как часть проверки «да, у вас плохой URL-адрес, дружище» .

Итак, мое исправление было таким простым, как добавление следующей строки в верхнюю часть файла .htaccess: RedirectMatch "^(/oldfolder/.*).html" "$1"

Это сейчас, если запрошенный URL http://example.com/oldfolder/blah.html, выполнит 301 редирект, используя http://example.com/oldfolder/blah а затем Wordpress сделает все остальное, изменив при необходимости на newfolder1, newfolder2, newfolder3 и т. д. на основе оставшейся части запрашиваемого URI.

Вы поверите, что мне потребовалось 4 часа, чтобы понять?