Маскирование домена / указание на каталог веб-приложения?
Я создал веб-приложение LAMP, которое позволяет пользователям создавать свои собственные страницы профиля, где они могут загружать свое резюме и портфолио. URL для профиля человека будет что-то вроде
http://jobbank.com/user/johndoe
Джон Доу регистрирует доменное имя http://johndoefreelancer.com/ и хочет, чтобы оно указывало на http://jobbank.com/user/johndoe. Любой, кто посещает johndoefreelancer.com, не должен знать, что им управляет http://jobbank.com/user/johndoe. Это означает, что URL браузера должен постоянно показывать адреса, такие как:
http://johndoefreelancer.com/aboutme (действительно указывает на jobbank.com/user/johndoe/aboutme) http://johndoefreelancer.com/portfolio (действительно указывает на jobbank.com/user/johndoe/portfolio)
Кроме того, нажатие на любые ссылки [a href=""] должно держать вас на johndoefreelancer.com вместо того, чтобы отправлять вас на jobbank.com.
Мой вопрос, каков наилучший способ добиться этого?
Я подумываю: 1) дать инструкции пользователям о том, как домен переадресовать с маскировкой
2) Попросите пользователей заполнить поле $homeUrl в их профиле пользователя, который сохраняется в базе данных.
3) В моем PHP-коде, если $homeUrl существует, замените все [a href="$_SERVER['HTTP_HOST']"] на [a href="$homeUrl"]
Это правильный подход? Есть ли способ лучше?
2 ответа
Альтернативный подход состоит в том, чтобы сказать своим пользователям указывать свои домены на ваш IP и устанавливать их как виртуальные хосты на основе имен. Преимущества:
- Пользователю гораздо проще настроить, а затем перейти с маскированием (последнее может быть даже невозможно в зависимости от регистратора)
- Вам не нужно иметь дело с перезаписью URL в вашем PHP-коде.
Это было бы легче настроить, если бы вам не пришлось использовать /user/johndoe
префикс для ваших URL (который вам на самом деле не нужен, потому что вы можете выполнить поиск домена в своем коде, чтобы определить идентификатор пользователя), но это возможно и с префиксом - просто установка mod_rewrite должна была бы быть более вовлечена в в этом случае (вам нужно будет сделать это для каждого домена).
Единственный практический способ, который я мог придумать в данный момент:
добавить поле в профиле пользователя для доменного имени
скажите пользователям, чтобы они указывали запись узла DNS на ваш IP (или на ваше основное доменное имя)
создайте виртуальный хост, который является ПЕРВЫМ из всех, кого вы можете иметь. (*)
на этом виртуальном хосте создайте скрипт index.php, который ищет запрошенное имя домена в профиле пользователя и отображает страницу.
Возможно, вам потребуется реализовать переключатель для URL-адресов, которые вы печатаете на странице. например. если вы перешли на страницу специального индекса, используйте / в качестве "базового href", во всех остальных случаях /user/username - "базовый href"
*) Если apache получает запрос на имя, которое он не знает (поскольку у него нет ServerName | Псевдоним vhost, он использует первый Vhost в качестве запасного.