www.Example.com有效,但不是root(Example.com)

时间:2015-12-17 17:40:40

标签: apache

我正在使用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

3 个答案:

答案 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