Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess与虚拟主机_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Apache .htaccess与虚拟主机

Apache .htaccess与虚拟主机,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我决定在apache上添加虚拟主机。我以前的看法是: ServerName域名1.com DocumentRoot/var/www/ 我在/var/www/中有.htaccess,它将非www重定向到www,并将类似forum.domain1.com的子域重定向到www.domain1.com/forum 这是我的htaccess文件: RewriteEngine on RewriteCond %{HTTP_HOST} ^forum\.domain1\.com$ RewriteRule ^

我决定在apache上添加虚拟主机。我以前的看法是:


ServerName域名1.com
DocumentRoot/var/www/

我在/var/www/中有.htaccess,它将非www重定向到www,并将类似forum.domain1.com的子域重定向到www.domain1.com/forum 这是我的htaccess文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^forum\.domain1\.com$
RewriteRule ^ http://www.domain1.com/forum%{REQUEST_URI} [P]
RewriteCond %{HTTP_HOST} !^www..*
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]*).(com|com/)
RewriteRule ^.*$ http://www.%1.%2{REQUEST_URI} [R=301,L]
现在我有两个域,我使用本教程设置虚拟主机:

所以,现在在我的/etc/apache2/站点中,我有3个文件,默认值、domain1.com和domain2.com。htaccess保留在/var/www/中,它为domain1.com工作,但不为domain2.com工作。 我是否需要更改/var/www/中的.htaccess以接受域2,或者我可以将.htaccess添加到/var/www/domain2.com/public_html/? 我是否需要将previous.htaccess从/var/www/to/var/www/domain1.com/public\u html移动到/var/www/domain1.com/public\u html?
提前谢谢

为什么您的www文件夹中有.htaccess,您应该将它们放在vhost DocumentRoot中,并使用每个.htaccess单独控制每个站点

所以你的树应该是:

/var/www/
 - domain1.com
   - .htaccess
 - domain.com
   - .htaccess

siteroot.htaccess文件只能在特殊情况下使用,否则使用Vhosts没有任何意义。。。最好只有一个vhost,剩下的就让.htaccess来做。

我把htaccess移到vhost根目录,但现在我的子域正在工作,只添加了www。在vhost中,你必须创建add
ServerName domain1.com
然后在你的操作系统主机文件中添加这个
127.0.0.1 domain1.com
已经添加了ServerName。已添加主机,但问题仍然存在…仅在url前面添加www。好的,我发现htaccess正在工作,但我的子域不工作。我需要在vhost conf文件中为子域添加新的虚拟名称。因此,我将ServerName sub.domain1.com文档root/var/www/domain1.com/sub放入其中。即使添加ServerAlias*.domain1.com,它看起来也像htaccess point sub.domain1.com到/var/www/。也许有人会为多个虚拟主机中的子域提供帮助。