Назад | Перейти на главную страницу

Как перенаправить субдомен на домен с субдоменом в качестве параметра

Я хотел бы перенаправить свой поддомен с подстановочными знаками в свой основной домен, используя поддомен в качестве параметра GET в URL-адресе, используя .htaccess.

Пример того, что я бы хотел:

billy.example.com

перенаправляет на

www.example.com/profile?user_name=billy

Вот текущее правило, которое я собрал на основе других ответов на этом сайте:

RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteRule ^(.*)$ http://www.example.com/shop?user_name=%1 [R,L]

Однако при перенаправлении я получаю следующий URL с ошибкой «Цикл перенаправления»:

www.example.com/profile?user_name=www

Я видел несколько разных ответов на этом веб-сайте, но, к сожалению, ни один из них не помог мне.

(Я использую PHP, и у меня есть настройка * в качестве поддомена на моей панели хостинга.)

Ваш цикл перенаправления происходит потому, что вы перенаправляете все (даже www.example.com). Может попробовать что-нибудь вроде:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://www.example.com/shop?user=%1 [L,R=301]

Это должно срабатывать только тогда, когда вы используете что-то другое, кроме www.example.com.

После попытки решить эту проблему с помощью .htaccess и неудачи я в конечном итоге использовал PHP для синтаксического анализа URL-адресов. Для желающих увидеть, что я сделал:

$host = $_SERVER['HTTP_HOST'];
$subdomain = str_replace('.example.com', '', $host);
if($subdomain != 'www')
    header("Location: http://www.example.com/shop?user_name=".$subdomain);