2011-01-04 2 views
1

내 웹 호스트는 내 "기본"도메인 이름을 루트 www 폴더로 지정합니다. 해당 사이트의 웹 파일은 "www/app/webroot"폴더에 있습니다. 현재 htaccess 파일에서 다음을 사용하여 사이트를 가동하고 있습니다.두 사이트에 대한 htaccess 파일 수정

RewriteBase/
RewriteEngine on 
RewriteRule ^$ app/webroot/ [L] 
RewriteRule (.*) app/webroot/$1 [L] 

동일한 사이트의 개발자 사이트를 시작하려고합니다. www 폴더에서 "dev"라는 폴더를 만들었습니다. 따라서이 폴더의 웹 파일은 "www/dev/app/webroot"에 있습니다. dev 폴더를 가리키는 하위 도메인이 있습니다. dev 폴더에서 위와 동일한 htaccess를 사용하면 루트 www 폴더의 설정을 상속하므로 (믿을 수 없음) 작동하지 않습니다. 페이지가로드되면 빈 페이지가 나타납니다. 두 사이트를 모두 허용하도록 htaccess 파일을 설정하려면 어떻게해야합니까?

미리 도움을 청하십시오! 나는 분명히이 물건에 초보자입니다.

답변

5

그래서 우리의 .htaccess를 사용

피 :-) 것들을 정리하려고합니다. 디렉토리/foo/bar에있는 .htaccess의 모든 설정은 디렉토리 설정으로 아파치 설정에서 설정할 수 있습니다 (서버가 그것을 사용하지 않는다면 아파치 conf에 제한된 액세스를 제공하면 .haccess가 유용합니다).

<Directory /foo/bar>(...)</Directory> 

그런 다음 이름이 지정된 가상 호스트로 사이트에 액세스 할 수 있습니다. 이 옵션이 있는지 확인하십시오 :

NameVirtualHost *:80 

언제든지 좋은 것들을 시작할 수 있습니다. 이것은 당신의 첫번째 앱 사용자의 가상 호스트 될 것입니다 :

<VirtualHost *:80> 
    ServerName app 
    ServerAlias www.app.somwhere.com 
    ServerAlias app.somwhere.com 
    DocumentRoot /www/app/webroot 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /www/app/webroot> 
     Options Indexes FollowSymLinks 
     # this prevent.htaccess reading, remove if you want .htaccess 
      AllowOverride None 
      # allow web access 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

대부분의 아파치 설정은 여기에 정의 될 수있다. 첫 번째 앱에만 해당됩니다. Apache는 사이트 이름 'app'또는 'www.app.somwhere.com'또는 'app.somwhere.com'에 대해 수행 된 모든 요청에 ​​대해이 구성을 제공합니다. 별칭 (ServerAlias ​​)을 많이 정의 할 수 있으며 단 하나의 이름 (ServerName) 만 정의 할 수 있습니다.

브라우저에 들어가서 http://app/을 입력하면 브라우저가 서버를 찾지 않으므로/etc/hosts에 설정하십시오. 이것은 모든 사람들이 실제 DNS를 얻을 때까지 호스트 파일에 있어야합니다 (첫 번째 앱이 app.somwhere.com이고 두 번째 foo.somwhere.com과 92.128.52.226이 외부 IP라고 가정) :

127.0.0.1 app.somwhere.com app foo foo.somewhere.com 
92.128.52.226 app.somwhere.com app foo foo.somewhere.com 

그리고 지금은 이제 두 번째 앱 또 다른 가상 호스트를 추가 할 수 있습니다 :

<VirtualHost *:80> 
    ServerName foo 
    ServerAlias www.foo.somwhere.com 
    ServerAlias foo.somwhere.com 
    DocumentRoot /www/foo/webroot 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /www/foo/webroot> 
     Options Indexes FollowSymLinks 
     # this prevent.htaccess reading, remove if you want .htaccess 
      AllowOverride None 
      # allow web access 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

등 이 아파치를 다시 시작하는 것을 잊지 마십시오. 다시 쓰기 규칙이 없습니다. 멋진 가상 호스트는 좋은 설정의 첫 번째 단계입니다. 이름, 규칙, 디렉토리 또는 위치 별 이름을 정의 할 수 있습니다. php.ini의 전역 공유 대신 php_value를 사용하여 가상 호스트별로 php 구성을 설정할 수도 있습니다.

유형

apache2 -S 

첫 번째는 '기본'하나라고 아파치가 될 것입니다 요청 된 사이트의 이름을 이해 does'nt 경우 버추얼 호스트의 목록을 얻으려면, 당신은 볼 수 있습니다 이 기본 노드 (이 경우를 처리하기 위해 특정 가상 호스트를 맨 위에 광고 할 수 있습니다).

+0

굉장해! 감사. 내가 필요한 것. – Randy

0

3 호선과 4 호선의 경로를 dev .htaccess에 추가해보십시오.

+0

나는 그것을 시도했다, 그것은 작동하지 않았다. 루트 폴더에 추가하면 주 사이트가 망가집니다. dev 폴더에 추가하면 오류가 발생합니다. 그 이유는 www/dev/app/webroot를 찾고 있기 때문입니다. – Randy

0

dev 폴더의 .htaccess에서 "RewriteBase /"행을 제거해야합니까?

+0

감사! 이것을 시도해 보았습니다. – Randy