웹앱에서 하위 도메인 사용자 계정을 만드는 방법
-
08-06-2019 - |
문제
Basecamp처럼 내가 사용하고 있는 앱의 하위 도메인을 사용자가 제어할 수 있도록 허용하려고 합니다. customusername.seework.com
.
에 필요한 것 DNS
이를 동적으로 생성하고 즉시 사용할 수 있도록 허용합니다.
그리고 사이트의 논리에서 이 문제를 어떻게 처리하도록 권장하시나요? Htaccess
하위 도메인을 조회하는 규칙 DB
?
해결책
이를 수행하는 방법은 DNS에 등록된 도메인 이름에 대해 'catch all'을 설정하여 everything.ourdomain.com이 우리 서버를 가리키도록 하는 것입니다.
Apache를 사용하면 가상 호스트에 대해 유사한 포괄 기능을 설정할 수 있습니다.ServerName은 단일 정적 이름이어야 하지만 ServerAlias 지시문에는 패턴이 포함될 수 있습니다.
Servername www.ourdomain.com
ServerAlias *.ourdomain.com
이제 모든 도메인이 프로젝트의 가상 호스트를 트리거합니다.마지막 부분은 (PHP)와 같이 코드에서 사용자 이름을 계산할 수 있도록 실제로 사용된 도메인 이름을 디코딩하는 것입니다.
list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );
또는 이미 제안된 RewriteRule은 user.ourdomain.com/foo/bar를 www.ourdomain.com/foo/bar?user=user 또는 원하는 대로 자동으로 매핑하는 것입니다.
다른 팁
DNS 및 URL 재작성에 대해 걱정하지 마세요.
DNS 레코드는 다음과 같이 정적입니다.
*.YOURDOMAIN.COM A 123.123.123.123
DNS 공급자에게 요청하거나(아직 수행하지 않은 경우) DNS 레코드를 제어할 수 있는 경우 직접 수행하십시오.그러면 자동으로 모든 하위 도메인(현재 및 미래 도메인)이 동일한 HTTP 서버를 가리키게 됩니다.
완료되면 http 서버의 서버 측 스크립트에 액세스하는 데 사용된 호스트 이름을 감지하기 위해 모든 단일 http 요청에서 HOST 헤더만 구문 분석하면 됩니다.
ASP.NET을 사용한다고 가정하면 이것은 제가 생각해낸 어리석은 예이지만 작동하고 이 접근 방식의 단순성을 보여줍니다.
<%@ Language="C#" %>
<%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>
그 비결은 URL 재작성을 사용하여 이름.도메인.com 투명하게 다음과 같이 매핑됩니다. domain.com/users/이름 귀하의 서버에서.일단 해당 경로를 시작하면 구현하기가 매우 쉽습니다.
나는 비슷한 일을 찾고있었습니다 (www.mysite.com/SomeUser
).
내가 한 일은 내가 편집한 것 404.shtml
이 서버 측 포함(SSI) 코드를 포함하려면:
<!--#include virtual="404.php" -- >
그런 다음 파일을 만들었습니다. 404.php
, 사용자 이름을 확인하기 위해 URL을 구문 분석하고 데이터베이스의 정보를 표시했습니다.