我肯定可以对我尝试使用 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]
答案2
您不需要为此重写规则。只需将 DocumentRoot 更改为您实际想要提供服务的目录即可。