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

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

По сути, мне нужно сделать две модификации .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]

Это отлично работает для перенаправления папки , но он работает только в том случае, если some-web-resource еще не содержит .html .

Я пробовал:

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

и многие его варианты, но я ' м никуда не денешься.

3
задан 20 December 2017 в 20:37
1 ответ

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

СТАРЫЙ URL ( http://example.com/oldfolder/some-web-resource.html ) имеет расширение html, и из-за ошибки я понял, что это единственное, что мне нужно change - 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 часа, чтобы понять?

3
ответ дан 3 December 2019 в 06:27

Теги

Похожие вопросы