htaccess在虚拟主机中不起作用,但在默认站点中是

时间:2013-09-17 00:45:31

标签: php apache .htaccess mod-rewrite virtualhost

我在虚拟主机apache文件和htaccess方面遇到了一些问题。 我有apache,昨天更新到2.6。我在其上安装了2个虚拟域,并禁用了默认域。 一切正常,网站负载很好,没有问题。

第一个虚拟域有一个带有+50重写条件的htaccess,所有这些都可以正常工作! 我试图为第二个域添加一些条件,但重写目录的那些不起作用。

这是条件:

RewriteRule ^user/([a-zA-Z0-9_-]+)$ index.php?username=$1
RewriteRule ^user/([a-zA-Z0-9_-]+)/$ index.php?username=$1

在那里,每个域的“站点可用”apache配置文件(只有相关的东西):

DOMAIN 1:

ServerAdmin webmaster@localhost
    ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/domain1.com/public_html
<Directory />
    Options FollowSymLinks
    AllowOverride ALL
</Directory>
<Directory /var/www/domain1.com/public_html/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride ALL
    Order allow,deny
    allow from all
</Directory>

DOMAIN2:

ServerAdmin webmaster@localhost
    ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/domain2.com/public_html
<Directory />
    Options FollowSymLinks
    AllowOverride ALL
</Directory>
<Directory /var/www/domain2.com/public_html/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride ALL
    Order allow,deny
    allow from all
</Directory>

正如您所看到的,除了主文件夹的路径之外,它们之间没有区别。 我不明白它的错误。 为什么第一个域工作正常,第二个域没有。

有些事情:

答:domain2 htaccess文件上的任何其他条件都可以正常工作,例如redirec只需要html到php或错误处理程序,或者只是简单地重定向到测试。

B:我在我的第一个域htaccess文件中粘贴了相同的重写条件,它完美无缺!

看起来apache配置文件无法正常工作。

我必须检查/更改吗?

我会感激任何帮助,对不起我的英语。

1 个答案:

答案 0 :(得分:1)

尝试一下它的测试和工作:

Options +FollowSymLinks -MultiViews 

RewriteEngine On
RewriteBase /

RewriteRule ^user/([a-z0-9_-]+)/?$ /index.php?username=$1 [NC,L]

我认为问题在于您启用了MultiViews,您也可以像上面那样将2条规则恢复为1条。

这应该会进入您的域名.htaccess

作为附注,您不需要2个目录指令,您可以删除这个:

<Directory />
    Options FollowSymLinks
    AllowOverride ALL
</Directory>

坚持:

<Directory "/var/www/domain2.com/public_html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride ALL
    Order allow,deny
    allow from all
</Directory>