RewriteRule로 인해 하위 도메인이 다른 DocumentRoot를 로드하게 됩니까?

RewriteRule로 인해 하위 도메인이 다른 DocumentRoot를 로드하게 됩니까?

사이트 루트보다 한 수준 더 깊은 하위 도메인 의 URL을 사용하여 디렉토리에서 자동 로드를 발생시키기 위해 ... 에서 사용하려는 작업에 대해 확실히 도움을 받을 수 있습니다 RewriteRule..htaccesssharpedge.Internet_IE

나는 이것을 가지고있다 httpd.conf:

[snip]
NameVirtualHost 11.22.33.44

<VirtualHost 11.22.33.44>
    Options All +ExecCGI
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/ourdomain.com
    ServerName ourdomain.com
    ServerAlias www.ourdomain.com
    DirectoryIndex index.htm index.html index.dna
    #---------------------------------
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    </IfModule>
    #---------------------------------
</VirtualHost>

<VirtualHost 11.22.33.44>
    Options All +ExecCGI
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/ourdomain.com
    ServerName  sharpedge.ourdomain.com
    DirectoryIndex index.htm index.html index.dna
    #---------------------------------
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    </IfModule>
    #---------------------------------
</VirtualHost>
[snip]

...이것은 .htaccess에 있습니다(사이트 루트, 여기: /var/www/html/ourdomain.com/).

Options -Indexes

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond   %{HTTP_HOST} ^sharpedge\.ourdomain\.com$
    # years ago this next line was used here, but in httpd.conf: (I don't know what it was supposed to do)
    # RewriteRule   ^(.+)        %{HTTP_HOST}$1          [C]
    RewriteRule   ^sharpedge\.ourdomain\.com(.*) /var/www/html/ourdomain.com/Internet_IE/$1  [L]
</IfModule>

..하지만 RewriteRule에서는 아무 일도 일어나지 않습니다. 마치 RewriteRule이 존재하지 않는 것 같습니다.

어떤 제안이라도 주시면 매우 감사하겠습니다.

편집하다:

  • /방금 DocumentRoot를 실제로 제공하려는 디렉터리로 변경했지만 해당 디렉터리의 파일에서 파일을 호출(포함)하고 사이트 루트에 있는 파일에 포함 경로 접두어를 붙일 수 있어야 합니다 . 이러한 파일은 사이트 루트의 다른 파일에서도 유사하게 호출할 수 있습니다.

답변1

이렇게 했습니다:

RewriteCond %{HTTP_HOST} ^sharpedge\.ourdomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/Internet_IE/
RewriteRule ^(.*)$ /Internet_IE/$1 [L]

감사합니다: https://stackoverflow.com/a/11744085/530006

답변2

이에 대한 규칙을 다시 작성할 필요는 없습니다. DocumentRoot를 실제로 제공하려는 디렉터리로 변경하기만 하면 됩니다.

관련 정보