RewriteRuleが原因で、サブドメインが別のDocumentRootを読み込むことができますか?

RewriteRuleが原因で、サブドメインが別のDocumentRootを読み込むことができますか?

サイトルートよりも1レベル深いサブドメインの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を実際に提供したいディレクトリに変更するだけです。

関連情報