Я хотел бы перенаправить свой поддомен с подстановочными знаками в свой основной домен, используя поддомен в качестве параметра 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);