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

Как вы делаете поддомены с подстановочными знаками?

Я хочу, чтобы subdomain.example.com указывал на example.com/profile.php?user=subdomain

С "субдоменом", изменяющимся в зависимости от ввода пользователя

Как ты это делаешь? Кроме того, я хочу, чтобы это было тихое перенаправление, чтобы subdomain.example.com отображался в адресной строке, когда пользователь вводит его или нажимает на ссылку.

Смотрите это: http://www.easymodrewrite.com/example-subdomains Вам действительно понадобится

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
   RewriteRule (.*) domain.com/profile.php?user=%2 [L]
</IfModule>

РЕДАКТИРОВАТЬ: чтобы иметь "тихое" перенаправление, последнее правило должно быть:

   RewriteRule (.*) /profile.php?user=%2 [L]

Убедитесь, что у вас есть profile.php в каталоге, где DocumentRoot подстановочного знака установлено значение.

Сам я этого не делал, но я бы начал с:

  1. У своего поставщика DNS настройте подстановочный знак.

    *.domain.com. IN A 1.2.3.4

  2. Используйте Apache mod_rewrite чтобы проверить заголовок Host: и изменить URL-адрес в соответствии с вашими спецификациями.

Решение, вероятно, представляет собой смесь всех упомянутых решений.

Сначала вам понадобятся записи DNS, как указано JJ. Тогда вам нужно использовать Директива ServerAlias чтобы все поддомены указывали на один и тот же каталог. И в конце вы можете использовать первые 2 строки кода Ника Бергмана:

$domain = explode(".", $_SERVER['SERVER_NAME']);
$username = htmlentities($domain[0]);

И с этого момента вы можете делать с $ username все, что хотите.