我正在使用Apache2和UBUNTU14 LTS,所有“标准”服务器。
问题很简单,在使用http://www.example.com
时效果很好,但在使用http://example.com
时却没有,它会转到错误的索引。
我有ls /var/www/
example.com example2.example html
wiki.example.com wp.example2.example
每个都有不同且良好的index.htm使用http://www.example.com
(转到/var/www/example.com
)或http://wiki.example.com
等。但http://example.com
的索引转到{{1 },而不是/var/www/html/index.htm
(!)。
我们有/var/www/example.com
,
/etc/apache2/sites-available/example.com.conf
编辑(备注)
我们正在使用一种解决方法 - 请忽略评论中的“真实世界”示例,它无法作为真正的测试 - 一个丑陋的PHP代码(不是解决方案)根(无子域)的<VirtualHost *:80>
ServerAdmin mymail@ggmail.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName wiki.example.com
DocumentRoot /var/www/wiki.example.com
</VirtualHost>
,重定向到www子域,
/var/www/html/index.php
修改
正如@covener评论建议, if ( preg_match( // if HTTP from other domain, redirects
'/(mydomain1|mydomain2|mydomain3)/',
strtolower($_SERVER['HTTP_HOST']),
$m
) ) switch($m[1]) {
case 'mydomain1':
header("Location: https://www.example.com"); die('');
case 'mydomain2':
header("Location: https://www.example2.example"); die('');
case '...':
header("Location: https://www...."); die('');
}
,结果
apachectl -S
答案 0 :(得分:2)
试试这个:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com/
</VirtualHost>
然后,您只需要使用 ServerName www.example.com 为您的真实服务器配置创建另一个 部分。
另外,CNAME的记录不会有替代方法吗? (我不确定)
答案 1 :(得分:0)
对不起所有,那是我的“人为错误”,在阅读file.conf
脚本时出现盲点,在我的编辑显示apachectl -S
结果后出现一般性失明,错误就在那里(!see { {1}}行),“BBB”配置上的错误名称“AAA”:
fabrincantes.com
所以我修改了 port 80 namevhost AAA (/etc/apache2/sites-enabled/BBB.conf:1)
alias BBB
上的简单名称更正,其中BBB.conf
改为“BBB”,
ServerName AAA
答案 2 :(得分:-1)
您需要修改 / etc / hosts 文件,使其指向正确的链接。
例如,我的localhost上的配置将是
127.0.1.1 example.com www.example.com