我在虚拟主机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配置文件无法正常工作。
我必须检查/更改吗?
我会感激任何帮助,对不起我的英语。
答案 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>