2011-04-26 7 views
9

도메인 이름과 루트 폴더와 관련된 공유 호스팅 계정을 가지고 있는데 (올바른 용어가 맞지 않으면 올바른 주소) /으로 설정되어 서버의 모든 파일이 공개/브라우저를 통해 액세스 할 수 있습니다..htaccess를 통해 루트 폴더 변경

.htaccess 등을 사용하여 루트 폴더를 /example.com/public/ (으)로 변경할 수 있습니까? 내가 제대로 이해 해요 경우

답변

21

, 다음

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/public/ 
RewriteRule ^(.*)$ /public/$1 [L,R=301] 

이 수행 URL에 /public/로 시작하지 않는 모든 요청을 리디렉션합니다 작동합니다.

희망이 있습니다.

+0

고마워요, @clmarquart! '/ example.com /'을'/ example.com/index.html' 또는'/ example.com/index.php'로 이동하려면 어떻게해야합니까? – moey

+0

RewriteCase 전에 RewriteBase /를 추가하는 것도 유리할 수 있습니다. 특히 VirtualDocumentRoot 지시어를 사용하는 경우. – zmonteca

+0

도움 주셔서 감사합니다 ... –

5

이 난 항상 내 프레임 워크에서 사용하는 방법입니다 : 내가 Bluehost를 사용

Rewritecond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /example.com/public/$1 [L,NC] 

RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule !^example.com/public/(.*) /example.com/public/$1 [L,NC] 
+0

그것은 저에게 효과가 없었습니다 ... –

0

...이 나를 위해 작동 것입니다 : 당신이 공유 호스팅에 있으며, 여러 도메인이있는 경우이 도움이됩니다 이름.

은 기본 도메인으로 public_html로 설정하지만 추가 기능 도메인으로 public_html

내부의 하위 폴더에있는이 그렇게 모든 기본 도메인 이름의 파일과 혼합 할 필요는 없습니다하게됩니다 도메인 폴더 추가 기능 ... 각 도메인은 자체 폴더에있을 수 있습니다 ...

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteCond %{REQUEST_URI} !^/PUTYOURFOLDERHERE/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /PUTYOURFOLDERHERE/$1 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteRule ^(/)?$ PUTYOURFOLDERHERE/ [L] 
Options +SymLinksIfOwnerMatch 
관련 문제