2012-03-19 4 views
0

난 내가 '이라는 폴더가 (정말 루트 문서,의는 V-도메인 폴더를 가정 해 봅시다) 문제에있어 appname '. appname.domain.com에서 모든 것이 정상적으로 표시됩니다. 내가 URL이 URL 표시 줄에서 appname.domain.com/appname/somefolder 에 다시 작성하지 않으려는이htaccess로는

http://appname.domain.com/somefolder 

그런 짓을 할 때 이제 내 문제입니다. 도움이 되었습니까?

업데이트 : 문서 루트에서 내가하려고 다음에 인덱스와 하위 폴더에 DIR을하고

RewriteEngine On 
RewriteBase /v-domain/ 

RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_URI} !appname/ 
RewriteRule ^(.*)$ /appname/$1 [L] 
RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname/(.+)$ http://appname.domain.com/$1/ [R=301,L] 
################### 
RewriteCond %{HTTP_HOST} appname2.domain.com 
RewriteCond %{REQUEST_URI} !appname2/ 
RewriteRule ^(.*)$ /appname2/$1 [L] 
RewriteCond %{HTTP_HOST} appname2.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname2/(.+)$ http://appname2.domain.com/$1/ [R=301,L] 
+0

이러한 규칙은 내가 .htaccess 파일에 넣었을 때 의도 한 것처럼 작동하는 것 같습니다. –

+0

인덱스가있는 하위 도메인 폴더에서 디렉터리를 만든 다음 해당 경로에 도달하려고합니다. "appname.domain.com/appname/somefolder" – razorxan

답변

1

시도 V 영역에서

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^v-domain/ 
RewriteRule ^(.*)$ /v-domain/$1 [L] 

이 그 길에 가야합니다. 당신은 URL이이 interferring mod_dir's DirectorySlash을처럼 소리 추악한 상술 한 방법 "appname.domain.com/appname/somefolder"

에 다시 쓰는 볼 수 있습니다. DirectorySlash가 켜져있는 상태에서 mod_dir이 디렉토리에 대한 요청이 있고 슬래시가없는 것으로 확인되면 은 브라우저에 해당 URL로 후행 슬래시를 포함하도록을 리디렉션합니다.

할 수있는 일은 DirectorySlash off으로 바꾸는 것이지만 DirectoryIndex'ing (mod_dir의 DirectorySlash 항목 참조)과 관련하여 공개 우려가 있습니다. 당신은 당신이 리디렉션을 수행하지만, URL의 /appname/ 비트없이 리디렉션해야합니다 몇 가지 규칙을 추가 시도 할 수 :

RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname/(.+)$ http://appname.domain.com/$1/ [R=301,L] 

요청이 요청 된 기업이를 것으로, 호스트 appname.domain.com위한 경우에 기본적으로 확인 디렉토리에서 요청이 이 아니고은 끝에 슬래시가 있고, 요청이 이미 /appname/에 대해 다시 작성된 경우 브라우저에 동일한 URL (appname없이)을 리디렉션하지만 슬래시는 뒤에 붙입니다. 리다이렉트 후에, 당신이 가진 첫 번째 규칙은/appname /을 포함하도록 내부적으로 URI를 다시 작성하지만, 요청은 이제 후행 슬래시로 끝나기 때문에 mod_dir은이를 무시해야한다.

+0

"appname.domain.com/folder' (후행 슬래시 제외)는 금지 된 오류로 끝납니다. – razorxan

+0

appname 폴더가 루트 디렉토리에 있으면 모든 것이 잘 작동합니다. 내 경우에는 문서 루트에있는 내 v-domain 폴더에 하위 도메인 폴더가 모두 들어 있습니다./v-domain/appname,/v-domain/appname2,/v-domain/appname3. 이러한 경로를 사용하여 제대로 작동하려면 어떻게 규칙을 편집 할 수 있습니까? 예 : '/ v-domain/appname/folder'입니다. – razorxan

+0

또한 URL의 두 부분을 분리하여 다시 작성하고 싶습니다. 내 문서 루트에서이 비 htaccess를 사용하여 모든 비 하위 도메인 요청을 v-domain 폴더로 리디렉션합니다. 'RewriteCond % {HTTP_HOST}!^www \ .domain \.도메인 이름 .com $ [NC] RewriteCond % {HTTP_HOST} ^./$ 1 [L]' 그런 다음 하위 도메인을 v-domain 폴더에 다시 작성하고 싶습니다. @Jon – razorxan