Мне нужно перенаправить пользователей со старыми ссылками на поддомен на новую ссылку, которая динамически генерируется с использованием информации из ссылки.
Например:
Старая ссылка будет выглядеть так:
subdomain-2013.old-domain.com/data/process/aqs-2d3f4f5g-fgtgyy-uunb.xml
Чтобы создать новую ссылку, мне нужен год, указанный в поддомене, и имя файла. (Год изменится, это не постоянно).
Новая ссылка:
new-domain.com/2013/aqs-2d3f4f5g-fgtgyy-uunb.xml
Как это делается? Это что-то достигается с помощью .htaccess?
@CBroe Для меня это все в новинку. Я рассмотрю это. Похоже, он не описывает, как извлечь год из поддомена.
Для этого вам нужно будет использовать RewriteCond, чтобы получить доступ к переменной HTTP_HOST. Какие бы части этого шаблона ни были зафиксированы, вы можете ссылаться на них как на обратные ссылки с помощью %1, %2 и т. д. в следующем правиле перезаписи.
@CBroe ах, это очень полезно. Спасибо!
Вы можете сделать это следующим образом, используя mod_rewrite в верхней части корневого файла .htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain-(\d{4})\.(example\.com) [NC]
RewriteRule ^data/process/([a-z0-9-]+\.xml)$ https://%2/%1/$1 [R=301,L]
ОДНАКО, я только что заметил, что вы отметили вопрос wpengine
. Веб-хост «WP Engine» больше не поддерживает файлы конфигурации .htaccess
. Ссылка: https://wpengine.com/support/htaccess-deprecation/
Приведенное выше решение не работает. Он неправильно вставил 'data/'process/' и не включает новый домен. htaccess.madewithlove.com?share=12f40a06-7dec-4e8e-a59e-d082e8f…
Я нашел два сайта, которые помогли решить эту проблему, а затем протестировали решение, ссылки на которые приведены ниже.
Вот решение:
RewriteCond %{HTTP_HOST} ^.*(\d{4})\.(.*?)$
RewriteRule . http://www.new-domain.com/%1%{REQUEST_URI} [R=301,L]
https://regex101.com/r/XFMOwW/1
https://htaccess.madewithlove.com?share=3ea90fee-86df-488e-9346-b0797c26a3f1
Отвечает ли это на ваш вопрос? Ссылка: mod_rewrite, объяснение перезаписи URL и «красивых ссылок»