У меня есть требование от клиента выполнить некоторые определенные перенаправления (часть списания старого сервера на новый). Я бился об это головой, и это сводит меня с ума!
По сути, мне нужно сделать две модификации .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]
и многие его варианты, но я ' м никуда не денешься.
Итак, оказалось, что 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 часа, чтобы понять?