RewriteRule 导致子域加载另一个 DocumentRoot?

RewriteRule 导致子域加载另一个 DocumentRoot?

我肯定可以对我尝试使用 in RewriteRule: .htaccess... 执行的操作提供一些帮助,以导致使用我们的sharpedge.子域的 URL 从目录自动加载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 更改为您实际想要提供服务的目录即可。

相关内容