Создайте субдомены на лету с .htaccess (PHP)

В вашем коде shots это словарь списка словарей. Вам необходимо обновить каждый «подсловарь выстрелов».

Самый простой способ сделать это - перебрать кадры, а затем установить клавишу «лига» в кадре:

league = 'premier_league'
for team_shots in shots.values():
    for shot in team_shots:
        shot['league'] = league
121
задан codeforester 16 February 2017 в 05:52
поделиться

7 ответов

Быстрое краткое изложение

  1. Необходимо создать подстановочный домен на сервере DNS *.website.com
  2. Затем в Вашем vhost контейнере необходимо будет указать подстановочный знак также *.website.com - в Этом выполняют ServerAlias ДОКУМЕНТЫ
  3. Затем извлеките и проверьте субдомен в PHP и отобразите соответствующие данные

Долгая версия

1. Создайте подстановочный знак запись DNS

В Ваших настройках DNS необходимо создать подстановочную запись домена такой как *.example.org. Подстановочная запись похожа на это:

*.example.org.   3600  A  127.0.0.1

2. Включайте подстановочный знак в vhost

Затем в конфигурации Apache необходимо настроить vhost контейнер, который указывает подстановочный знак в ServerAlias Директива ДОКУМЕНТОВ. Пример vhost контейнер:

<VirtualHost *:80>
  ServerName server.example.org
  ServerAlias *.example.org
  UseCanonicalName Off
</VirtualHost>

3. Удайтесь, какой субдомен Вы идете в PHP

Затем в Ваших Сценариях PHP можно узнать домен путем заглядывания $_SERVER супер глобальная переменная. Вот пример захвата субдомена в PHP:

preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
    $subdomain = $matches[1];
}

Я привык regex здесь для позволить, чтобы люди поразили Ваш сайт с помощью www.subdomain.example.org или subdomain.example.org.

Если Вы никогда не ожидаете иметь необходимость иметь дело с www. (или другие субдомены), затем Вы могли просто использовать подстроку как так:

$subdomain = substr(
                 $_SERVER['SERVER_NAME'], 0,
                 strpos($_SERVER['SERVER_NAME'], '.')
             );

Массовый виртуальный хостинг

Массовый виртуальный хостинг является немного отличающейся схемой к вышеупомянутому, в котором Вы обычно использовали бы его для хостинга многих отличных веб-сайтов вместо того, чтобы пытаться использовать его, приводят в действие приложение, как вопрос предполагает.

Я зарегистрировал базирующуюся массовую виртуальную среду хостинга своего mod_rewrite прежде в сообщении на моем блоге, который Вы могли посмотреть на то, если это - маршрут, Вы хотите взять. Существует также, конечно, соответствующая страница руководства Apache.

Apache также имеет внутренний способ иметь дело с массовым виртуальным хостингом, который немного менее гибок, чем mod_rewrite метод, который я использовал. Это все описано на Apache Динамично Настроенная Массовая Виртуальная страница руководства Хостинга.

123
ответ дан 24 November 2019 в 01:33
поделиться

Вы могли позволить каждый субдомен во-первых и затем проверить, допустим ли субдомен. Например:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule !^index\.php$ index.php [L]

В index.php Вы можете, чем извлечение использование субдомена:

if (preg_match('/^([^.]+)\.example\.com$/', $_SERVER['HTTP_HOST'], $match)) {
    var_dump($match[1]);
}

Но все это требует, чтобы Ваш веб-сервер принял каждое имя субдомена.

12
ответ дан 24 November 2019 в 01:33
поделиться

В дополнение к установке подстановочного знака DNS Вы могли бы хотеть смотреть на Динамический Массовый Виртуальный Хостинг для Apache, который является, как я решил это в прошлом

7
ответ дан 24 November 2019 в 01:33
поделиться

Самый легкий путь состоит в том, чтобы перенаправить все субдомены (с подстановочным знаком *) для указания на/wwwroot. Тогда помещенный .htaccess к этой папке со следующим кодом:

RewriteCond %{ENV:REDIRECT_SUBDOMAIN} ="" 
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.domain\.com\.?(:80)?$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule ^(.*) %1/$1 [E=SUBDOMAIN:%1,L] 
RewriteRule ^ - [E=SUBDOMAIN:%{ENV:REDIRECT_SUBDOMAIN},L]

Это выполнит ту каждую подпапку/wwwroot папки в приемлемом через субдомен (foldername.domain.com).

Найденный этим несколько лет назад на http://www.webmasterworld.com/apache/3163397.htm

5
ответ дан 24 November 2019 в 01:33
поделиться

Это не имеет отношения к .htaccess. Необходимо будет настроить записи DNS и виртуальный хостинг для субдоменов.

4
ответ дан 24 November 2019 в 01:33
поделиться

Mod_vhost_alias - это правильный модуль для этого.

В одной строке вы можете указать Apache, что нужно искать в нужном месте, с хэшированием каталогов и т. д. Например, строка:

VirtualDocumentRoot /http/users/%3.1/%3.2/%3

сообщит Apache, что для корневого документа нужно указать / http / users / s / u / subdomain при запросе для subdomain.yourdomain.com

4
ответ дан 24 November 2019 в 01:33
поделиться

Я думаю, что подстановочный DNS с Динамическим Массовым Виртуальным Хостингом Apache является разумным решением также. Хотя, я никогда не пробовал его.

, Если у Вас есть потребность масштабировать горизонтально к нескольким серверам или другим решениям просто, не работают на Вас, я рекомендую использовать базу данных управляемый сервер DNS. Я успешно использовал MyDNS в прошлом. Так как это использует MySQL (или PostgreSQL), можно обновить DNS на лету с PHP или примерно чем-либо еще. Код не похож на него, был обновлен в некоторое время, но это - DNS и поэтому не точно ультрасовременное.

0
ответ дан 24 November 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: