создать поддомен с использованием htaccess динамически на основе имен пользователей - PullRequest
0 голосов
/ 27 января 2020

У меня проблема, мне нужно знать, как динамически создавать поддомен.

http://example.com/user.php?id=ajithjojo

Я хочу, чтобы он работал как

 http://ajithjojo.example.com/

, насколько это возможно. Я проверил все обсуждения StackOverflow, но не получил правильный ответ, что мне нужно

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Это не имеет ничего общего с htaccess. Вы можете настроить свой веб-сервер так, чтобы * .example.com указывал на конкретный c publi c root. В этой публикации c root находится сценарий php, который проверяет базу данных, чтобы определить, существует ли имя хоста / пользователя.

Таким образом, ваш первый URL создает запись в базе данных, которая говорит, что ajithjojo существует. Затем при посещении второго URL-адреса сценарий видит, что домен существует, и затем выполняет динамические действия c.

. Если он не существует, сценарий создает 404-заголовок или перенаправляет куда-либо.

0 голосов
/ 27 января 2020

Вам либо нужно реализовать некоторые логи c для добавления виртуальных хостов на http * сервер apache (сложный и сомнительный), либо вы используете хост по умолчанию (тот, который отвечает на все входящие запросы, которые не *) 1002 * обрабатывается существующими vhosts) и реализует внутренние правила переписывания в этом. Это позволяет вам просто раздавать ссылки на такие «субдомены» (фактически имена хостов).

Эти правила переписывания могут выглядеть следующим образом:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRUle ^ %{REQUEST_URI}?user=%1 [END]

Очевидно, вам нужно будет настроить это в соответствии с вашими фактическими настройками, но оно должно указывать вам правильное направление. Например, вы можете использовать реализацию, которая оценивает запрошенный хост, вместо того, чтобы полагаться на заданный аргумент c http get, как показано выше. Но это детали реализации, которые вы должны решить сами.

Если вы получаете внутреннюю ошибку сервера (http статус 500), используя вышеприведенное правило, то есть вероятность, что вы используете очень старую версию apache http сервера. В этом случае вы увидите определенный намек на неподдерживаемый флаг [END] в файле журнала ошибок http-серверов. Вы можете попробовать обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...