1
回答
apache拦截三级域名
华为云实践训练营,热门技术免费实践!>>>   
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/miniwebsites/
    ServerName *.m.aaa.cn
    ErrorLog logs/error_log
    CustomLog logs/access_log common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/bbb/
    ServerName aaa.cn
    ServerAlias *.aaa.cn
    ErrorLog logs/error_log
    CustomLog logs/access_log common
</VirtualHost>


如上,我想实现apache匹配到*.m.aaa.cn 指向到特定程序目录,而二级域名和顶级域名指向另一个目录,但是这样配置后,三级域名无法拦截到,所有请求都通向了第二个配置,求指点

举报
findever
发帖于3年前 1回/617阅
共有1个答案 最后回答: 3年前

是apache 2.2么?apache 2.2的话,想要支持基于域名的虚拟主机,需要加上NameVirtualHost *:80指令,apache 2.4废弃了这个指令,直接可以支持基于域名的虚拟主机

而且复制了你的配置,发现服务启动直接报错,语法格式都不对,ServerName是不能有通配符的,但是ServerAlias可以,你的配置第四行需要改一下

--- 共有 5 条评论 ---
findever回复 @Feng_Yu : 还真没报错,也没警告,很是奇妙。。。 3年前 回复
Feng_Yu回复 @findever : 我这边ServerName有通配符启动apache直接报错,你那边不报错吗?至少在日志应该会有警告吧。ServerName指令不支持通配符,想统配多主机用ServerAlias,这个支持通配符 3年前 回复
findever回复 @Feng_Yu : 终于解决了,servername去掉通配符就ok了,thanks 3年前 回复
Feng_Yu回复 @findever : 看看服务启动的日志,有没有报错或者警告。我这边是ubuntu server 14.04的,apache是2.4版本,复制你的配置,改一下ServerName的通配符配置,是可以使用的,没有任何问题。 3年前 回复
findever是2.2的,NameVirtualHost *:80已经加过了,域名是可以正常解析的,现在的问题是我配置的第一部分,即三级域名不能拦截到,所有三级域名的访问都跑到二级域名配置 *.aaa.cn 那里去了 3年前 回复
顶部