Как предложить пользовательские субдомены для Приложения SAAS - PullRequest
14 голосов
/ 08 января 2011

Как мне предложить Basecamp / SAAS App как субдомены клиентам?

Например, URL моего веб-сайта равен http://www.example.com всякий раз, когда пользователь регистрируется, я хочу предложить ему URL-адрес типа http://company.example.com, который должен загрузитьфайлы / содержимое из каталога /app веб-сайта.

И позже я хочу, чтобы они выбирали свой собственный домен / поддомен с помощью CNAME, чтобы они могли иметь URL-адрес, например http://clients.mywebsite.com

Я хочу сделать это в Pure PHP и .HTACCESS, и все будет происходить автоматически.

И я хочу сохранить структуру URL-адреса такой же, то есть http://company.example.com/login, http://company.example.com/accounts, http://company.example.com/files/style.css, хотя этифайлы находятся в каталоге /app. Я хочу, чтобы к ним обращались вот так.

Я могу справиться со всеми функциями PHP, мне нужна помощь с кодами .htaccess и как работать с CNAME.

1 Ответ

11 голосов
/ 08 января 2011

Убедитесь, что DNS разрешает все субдомены, включая следующие в зоне домена:

*.example.com. 14400 IN A HereBeIP

Далее, настройте веб-сервер для распознавания всех входящих запросов, для Apache вам необходимо добавить в VirtualHost следующее:

ServerAlias *.example.com

Вот и все. Единственное, что осталось - это логика в коде, вам нужно проверить имя хоста, чтобы увидеть, был ли сделан запрос к example.com или foo.example.com.

Обновлено с более подробной информацией.

Итак, если ваши файлы находятся в /path/to/files/app, вам нужно настроить виртуальный хост следующим образом:

<VirtualHost>
    SeverName example.com
    ServerAlias *.example.com
    DocumentRoot /path/to/files/app
    # plus what else is needed
</VirtualHost>

Таким образом, все запросы будут преобразованы в каталог /app. Чтобы проверить это, примените указанную выше конфигурацию DNS или просто добавьте проверяемые домены в файл hosts, /etc/hosts в Linux или c:\Windows\System32\drivers\etc\hosts в Windows.

...