基于名称的虚拟主机?

时间:2014-08-07 05:09:27

标签: apache .htaccess httpd.conf

我有一个使用Apache2的新网站。查看我的服务器日志,我发现有越来越多的其他域名(都是用GoDaddy托管)神秘地指向我服务器的IP地址。我不知道这有什么害处,但我看不出有什么理由让我坚持这种情况。从谷歌搜索我已经收集到的,我已经收集到停止此操作的方法是设置基于名称的虚拟主机并拒绝其他域名指向我的内容的任何尝试。但是,我完全不确定如何设置相关条目。查看我的/etc/apache2/apache2.conf文件中的评论,我得到的印象是我应该按照

的方式做一些事情。
NameVirtualHost mysite.com:80
<VirtualHost mysite.com:80>
ServerName mysite.com
ServerAlias:www.mysite.com
ErrorLog:/var/log/mysite.error.log
CustomLog:/var/log/mysite.access.log
</VirtualHost>

这可能是也可能不对,但我从未在野外修改过apache配置文件,除此之外我不清楚这会阻止anothercrappysite.com指向我的IP地址并显示我的内容。

对于任何能够告诉我如何在这里做事的人,我都非常感激。

P.S。 - 从我所看到的,我似乎没有httpd.conf文件。只是apache2.conf。

通过编写一个专门将所有不包含mysite.com或www.mysite.com的请求重定向到默认404页面的htaccess规则,可能还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

为了任何来这里寻求解决类似问题的人的利益,这里有什么做法

<VirtualHost ip_address:80>
ServerAdmin admin@...
DocumentRoot /var/www/html/
ServerName mysite.com
ServerAlias www.mysite.com
ErrorLog /var/log/mysite.error.log
CustomLog /var/log/mysite.access.log combined
RewriteEngine On
RewriteCond  %{HTTP_HOST}  !^(www.mysite|mysite).com$ [NC]
RewriteRule ^ [F]
</VirtualHost>

不言而喻,你应该

  • 输入服务器的IP地址
  • 使用您网站的域名
  • 确保已启用mod_rewrite

您可以通过简单的PHP脚本检查以查看启用了哪些模块

<?php
print_r(apache_get_modules());
?>

如果mod_rewrite没有列在该列表中,您通常可以通过从

复制它来获取它
/etc/apache2/mods-available to
/etc/apache2/modes-enabled

然后重新启动Apache

service apache2 restart