2013-08-08 2 views
1

나는 wsgi 응용 프로그램을 실행중인 하위 폴더가 있습니다. 또한이 하위 폴더를 가리키는 addon 도메인이 있습니다. 하위 폴더에서 .htaccess 파일을 설정하는 데 문제가 있습니다.WSGI .htaccess with addon domain

나의 현재 파일 구조 :

public_html/ 
    .htaccess 
    irrelevant index.html 
    some other irrelevant stuff 
    sub_folder/ 
    .htaccess 
    app.wsgi 

나는/public_html을 /을 가리키는 maindomain.com 및/sub_folder /에 가리키는 addondomain.com 있습니다. 가 현재의 루트 폴더에 htaccess로 파일이 비어, sub_folder의 하나입니다 : 내가 addondomain.com에 가면

RewriteEngine On 
RewriteBase/
RewriteRule ^(app\.wsgi/.*)$ - [L] 
RewriteRule ^(.*)$ app.wsgi/$1 [QSA,L] 

이 작동하지만, 내가 maindomain.com/sub_folder에 갈 때 나에게 (404)을 제공합니다 . 로그는 /public_html/sub_folder/app.wsgi 대신 /public_html/app.wsgi를 찾습니다. .htaccess를 두 시나리오에서 모두 사용할 수 있도록 재 작성하려면 어떻게해야합니까?

답변

1

추가 기능 도메인에서도 작동합니다.

RewriteEngine On 
RewriteBase/

RewriteRule ^(app\.wsgi/.*)$ - [L] 

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC] 
RewriteRule ^sub_folder/(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L] 

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC] 
RewriteRule ^(sub_folder/)?(.*)$ app.wsgi/$1 [NC,QSA,L] 

편집 : 필요 이상

규칙은 영업 이익의 .htaccess 이후 불통되는 것은 /sub_folder 내에서 이미. 위의 것들은 루트 /.htaccess이 운전석에 있기를 원한다면 여전히 작동 할 것입니다.

RewriteEngine On 
RewriteBase/

RewriteRule ^(app\.wsgi/.*)$ - [L] 

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC] 
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L] 

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC] 
RewriteRule ^(.*)$ app.wsgi/$1 [NC,QSA,L] 
+0

이 RewriteCond를 사용하면 maindomain.com/sub_folder와 함께 작동하지 않습니다.이 경우 아무 것도 app.wsgi로 리다이렉트되지 않기 때문입니다. 나는 이것으로 처음에 대답하려고했지만, 아직 완전히 작동하지는 않는다. 내 대답을 참조하십시오. (나는 아직도 그것을 망설이게한다. 편집이나 대답이 좋으면 여기에 넣어야한다.) – BrtH

1

나는 ... 그것은 일종의 작동했다

RewriteEngine On 
RewriteBase/

RewriteRule ^(app\.wsgi/.*)$ - [L] 

RewriteCond %{REQUEST_URI} ^/sub_folder [NC] 
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [QSA,L] 

RewriteCond %{REQUEST_URI} !^/sub_folder[NC] 
RewriteRule ^(.*)$ app.wsgi/$1 [QSA,L] 

라비의 대답은 addondomain.com 작동 @ 있지만, maindomain.com/sub_folder으로,이 경우 인덱스가 보여되어 있지 때문에

왜냐하면 app.wsgi로 리디렉션되지 않기 때문입니다.

이 문제를 해결하기 위해 두 번째 RewriteCond와 RewriteRule을 추가했습니다. 이제 문제는 addondomain.com/sub_folder에 가면 작동하지 않습니다 ( 일 수 없습니다). 그래서 제대로 처리하는 더 나은 대답이 있다면, 제발 저를 계몽하십시오. 그렇지 않으면 그 상황이 발생하지 않기를 바랍니다.

편집 :

이 작동 :

RewriteEngine On 
RewriteBase/

RewriteRule ^(app\.wsgi/.*)$ - [L] 

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC] 
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L] 

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC] 
RewriteRule ^(.*)$ app.wsgi/$1 [NC,QSA,L] 

이 htaccess로는 sub_folder에, 그래서 ^(.*)$ 부분은 sub_folder의/후 단지 물건이기 때문에 라비의 정확한 코드가 작동하지 않았다, 어떻게 든 . 하지만 이걸 수정하면 효과가 있습니다. 도와 주셔서 감사합니다.

+0

maindomain/sub를 maindomain/sub/wsgi/sub로 리디렉션하지 않습니까? 어쨌든, 애드온 도메인에 도움이되는 업데이트를 추가했습니다. –

+0

어쨌든 그것은 ... 하지만 업데이트를 기반으로 업데이 트되었습니다 지금은 완벽하게 작동합니다! – BrtH

+0

도와 드리겠습니다. 제 대답이 당신의 문제를 해결하는 데 도움이된다면 동의하십시오. 감사. –