htaccess правила перенаправления md5 и сохраните md5 - PullRequest
1 голос
/ 14 июля 2020
• 1000 Следуя правилу
    RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login$1 [R=301,L]

, он работает наполовину, он хорошо перенаправляет, если цепочка находится на md5, но не сохраняет значение md5. Я думаю, что он отсутствует (.*).

Мне нужно сохранить все остальные страницы, на которых нет md5

https://new.example.com/contact.html
https://new.example.com/bablac/blibli.html

1 Ответ

0 голосов
/ 14 июля 2020
RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login$1 [R=301,L]

UPDATE: Фактически вы ничего не захватываете, поэтому обратная ссылка $1 всегда пуста. Вам нужно либо создать группу захвата в шаблоне RewriteRule (ie. В скобках), либо использовать обратную ссылку $0, которая содержит полное совпадение.

Вы также перенаправляют на /login{md5}, тогда как вы указали, что вам нужно перенаправить на /login?md5={md5} (чтобы «сохранить этот md5 как переменную get»), поэтому вам нужно будет настроить последнюю часть правила так, чтобы она читалась как /login?md5=$1 . Другими словами:

RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login?md5=$0 [R=301,L]

Вам нужно будет очистить кеш браузера, так как 301 (постоянное) перенаправление будет кэшировано браузером.

Я предполагаю, что старые и новые домены указывают на разные серверы, в противном случае вам может потребоваться условие, которое явно проверяет запрошенное имя хоста. Например:

RewriteCond %{HTTP_HOST} ^old\.example\.com [NC]
RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login?md5=$0 [R=301,L]
...