문제

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을 구문 분석하고 데이터베이스의 정보를 표시했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top