Перенаправление доменов на другой и добавление перенаправленного домена в виде строки запроса

В моем файле htaccess есть следующее, который перенаправляет все домены, указывающие на это место, на somedomain.uk, который работает:

RewriteCond %{HTTP_HOST} !^www\.somedomain\.uk
RewriteRule ^(.*)$ http://www.somedomain.uk$1 [R=301,L]

Есть ли способ передать домен перенаправления на somedomain.uk в качестве параметра.

например, переход на example.com приведет к перенаправлению на https://www.somedomain.uk/?url=example.com

Спасибо

1 ответ

Решение

Конечно, это возможно:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.somedomain\.uk$
RewriteRule ^ http://www.somedomain.uk%{REQUEST_URI}?url=%{HTTP_HOST} [R=301]

Однако я бы предложил использовать другое имя параметра, поскольку имя хоста не является "URL-адресом".

Рекомендуется начать с временного перенаправления 302 и изменить его на постоянное перенаправление 301 позже, когда вы убедитесь, что все настроено правильно. Это предотвращает проблемы с кешированием при тестировании...

Эта реализация будет работать аналогично в конфигурации хоста http-серверов или внутри распределенного файла конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на http-хосте. Если вы используете распределенный файл конфигурации, вам необходимо позаботиться о том, чтобы его интерпретация была вообще включена в конфигурации хоста и чтобы он находился в папке хоста.DOCUMENT_ROOT папка.

И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов вместо использования файлов динамической конфигурации (".htaccess"). Эти распределенные файлы конфигурации добавляют сложности, часто являются причиной неожиданного поведения, их трудно отлаживать, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читайте: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

Другие вопросы по тегам