2010-06-13 3 views
0

원래 간단한 문제로 생각했습니다. 내 웹 사이트에 대한 공유 호스팅을 사용하고 있습니다 (Apache 구성에 액세스 할 권한이 없음). 모든 콘텐츠를 저장할 단일 폴더 만 제공되었습니다.이 모든 것이 훌륭하고 훌륭하지만 모든 하위 도메인이 자신의 가상 문서 루트를 public_html 안에 넣으십시오. 이는 사실상 내 메인 도메인의 폴더가된다는 의미입니다. 내 모든 웹 콘텐츠 public_html 여전히 있지만, 그것의 작은 부분을 클라이언트에 제공됩니다,Apache mod_rewrite - 도메인 루트를 하위 디렉토리로 전달

 
public_html/ 
    www/ 
     index.php 
     ... 
    sub1/ 
     index.php 
     ... 
    some_library/ 
     ... 

이 방법 : 내가하고 싶은 무엇

이처럼 내 public_html 뭔가를 정리하다 . 모든 하위 도메인에 대해이 작업을 쉽게 수행 할 수 있지만 문제가있는 기본 도메인입니다.

나는 다음과 public_html.htaccess 파일 생성이 상당히 잘 작동

 
Options +SymLinksIfOwnerMatch # I'm not allowed to use FollowSymLinks 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/www [NC] 
RewriteRule ^(.*)$ /www/$1 [L] 

을하지만, 어떤 이상한 이유로 www.example.com/stuff에 대한 www.example.com/www/stuff 따라서 404 오류가 주어진다위한 요청로 변환됩니다. 'R'플래그가 지정되지 않으면 mod_rewrite가 완전히 내부적 이었기 때문에 리디렉션이 의미하는대로 요청이 생성 된 이유를 이해할 수 없습니다.

제가 실제로하고 싶은 모든 문제는 서브 디렉토리에 www.example.com의 루트에 대한 모든 요청을 전달하는 것으로 해결할 수있는 간단한 문제는 아니지만 시간을 들여 답변을 찾지 못했지만 아무도 정확하지 않습니다. 나는이 문제가있는 유일한 사람이라고 믿기가 어렵습니다.

이 질문에 이전에 답변 한 적이 있다면 사과드립니다. 검색 및 트롤링을했지만 적절한 답변을 찾을 수 없습니다. 제발 누군가가 이것에 대해 밝힐 수 있습니까?

답변

0

마침내이 문제를 직접 해결할 수있었습니다. .htaccess 파일을 제거한 후에도 아파치는 폴더 설정을 기억합니다. 그래서 제가 오랫동안 이것을 해왔 던 것처럼, 저의 초기 시도 중 일부는 설정을 완전히 오염 시켰습니다.

우선 RewriteEngine off 파일을 제외한 모든 파일을 .htaccess 번으로 주석 처리하여 해결했습니다. 거의 모든 것을 정상으로 되돌려 놓았습니다. 그리고 나는 다음과 같은 설정 작성하여 원하는 효과를 얻기 위해 관리 : 이제 모든 것이 내가 원래 원하는대로 작동하는 것 같다

 
<IfModule mod_rewrite.c> 
    RewriteEngine off 
</IfModule> 

: 마지막으로

 
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ www/ [L] 
    RewriteRule (.*) www/$1 [L] 
</IfModule> 

을, 나는이 포함 된 www 디렉토리에있는 다른 .htaccess 파일을 만든 . 수치스럽게도이 모든 것을 해결하는 데 너무 오래 걸렸습니다!

관련 문제