0

这里的 Apache(主要是)菜鸟...肯定可以对我尝试使用RewriteRulein进行的操作提供一些帮助.htaccess:...导致使用我们的sharpedge.子域的 URL 从目录中自动加载Internet_IE- 比站点根目录更深一层.

我有这个httpd.conf

[snip]
NameVirtualHost 11.22.33.44

<VirtualHost 11.22.33.44>
    Options All +ExecCGI
    ServerAdmin hostmaster@ourhost.com
    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 hostmaster@ourhost.com
    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 更改为我实际想要服务的目录,但我需要能够从该目录中的文件中调用(包含)文件/,其中包含路径中的前缀,这些文件位于站点根目录中. 这些文件也同样从站点根目录中的其他文件中调用。
4

1 回答 1

1

您不想将主机的任何部分放在 中RewriteRule,但是您正确设置了 HTTP_HOST,请尝试:

RewriteCond %{HTTP_HOST} ^sharpedge\.ourdomain\.com$ [NC]
# to prevent looping
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Internet_IE/$1 [L]

尝试更改!-f!-d检查:

RewriteCond %{HTTP_HOST} ^sharpedge\.ourdomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/Internet_IE/
RewriteRule ^(.*)$ /Internet_IE/$1 [L]
于 2012-07-31T15:50:48.970 回答