2017-05-08 1 views
1

간단한 콘텐츠 관리 시스템을 만들고 있습니다. 내 목표는 각 사용자의 파일을 쓰지 않고 user.example.com에 사용자의 웹 사이트를두고 user.example.com/subpage에 서브 페이지를 배치하는 것입니다. 결국 POST 매개 변수로 하위 도메인과 디렉토리를 가져 오거나 (또는 ​​URL을 읽고 구문 분석하여)이를 기반으로 데이터베이스에서 데이터를 가져오고 싶습니다.htaccess - 숨겨진 매개 변수가있는 하나의 디렉토리에있는 모든 하위 도메인

저는 우분투 14.04에서 램프 스택을 사용하고 있습니다. mod_rewrite가 사용 가능하며 다음 .htaccess가 ERR_NAME_NOT_RESOLVED 오류를 생성합니다.

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC] 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://example.com/ [L,NC,P] 
+0

더 복잡한 mod_rewrite 규칙을 사용하는 대신에 php와'$ _SERVER [ 'HTTP_HOST']'를 사용하여 그 경로와 경로를 얻는 것이 더 쉬울 수도 있습니다. –

+0

정확히'.htaccess' 파일로 무엇을하려하고 있습니까? 당신은 아무것도하지 않으려 고 노력하는 것 같습니다. ERR_NAME_NOT_RESOLVED는 DNS 오류이므로 'http : // example.com /'이 해결되지 않으면 해당 지시어가 오류를 유발할 수있는 유일한 방법입니다. – MrWhite

+0

'$ _SERVER [ 'HTTP_HOST']'도 사용하려고 생각했지만 URL을 변경하지 않고 모든 하위 도메인을 디렉토리로 경로 변경하는 데 여전히 문제가 있습니다. – j0sh77

답변

0

제공하는 모든 하위 도메인은 다음 URL을 라우팅의 관점에서 특히 공상 아무것도 할 필요가 없습니다 메인 도메인으로 파일 시스템의 같은 지역을 가리 킵니다. 이미 파일 시스템의 올바른 영역에 있으므로 기본 도메인으로 "리디렉션"할 필요가 없습니다.

그런 다음 상당히 표준적인 프런트 컨트롤러 패턴을 구현할 수 있습니다. 가장 기본적인 형태 :

FallbackResource /index.php 

그런 다음, index.php 당신은 URL 경로 (와 쿼리 문자열)을 얻기 위해 하위 도메인 (사용자)와 $_SERVER['REQUEST_URI']를 얻을 수 $_SERVER['HTTP_HOST']을 검사 할 수 있습니다.

또는 컨트롤러에 명시 적으로 하위 도메인을 전달할 수 있습니다 (그러나 어떤 이유에서든 사전 확인하려는 경우가 아니면 실제로이 작업을 수행 할 필요는 없습니다). 여기

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com [NC] 
RewriteRule^index.php?user=%1 [L] 

, %1RewriteCond 지시어에 일치하는 서브 도메인에 대한 역 참조있다 : 예를 들어,의 mod_rewrite를 사용. 처음 두 RewriteCond 지시문은 정적 리소스가 라우팅되지 않도록합니다.

관련 문제