让 Lighttpd 对于未使用的子域返回 404?

Ray*_*alz 5 lighttpd wildcard-subdomain http-status-code-404

我在使用 Lighttpd 的 Ubuntu 服务器上设置了一些域。我有通配符域,我希望未使用的子域返回 404 而不是 200 并显示常规域。这个问题引起了我的注意,因为一些经验不足的搜索引擎(Bing、百度、mail.ru)正在用奇怪的子域索引我的网站。

我在这里发现了对 Apache 提出的同样的问题:Wildcard DNS, VirtualHosts on apache2, 404 forused subdomains

但是我还没有找到任何有关 Lighttpd 的信息。

我想www.example.com/*重定向301example.com/*(已设置)

我想allUnsetSubdomains.example.com/*返回,404以便搜索引擎和人们了解它不存在。

这是我的文件中的相关数据vhost.conf

$HTTP["host"] =~ "^www\.(.*)$" {
  url.redirect = ( "^/(.*)" => "http://%1/$1" )
}

# lots of other domains #

$HTTP["host"] =~ "example.com$" {
server.document-root = "/var/www/example.com"
server.errorlog = "/var/log/lighttpd/example.com-error.log"
accesslog.filename = "/var/log/lighttpd/example.com-access.log"
server.error-handler-404 = "/index.php"
}

# lots more domains #
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够有一个通用规则,即服务器上所有域的所有未使用的子域都返回404,就像 www 重定向一样。老实说,我不太了解 Lighttpd 配置文件或正则表达式。

小智 4

您可以使用一些“技巧”,如devsite.pl上所示。

} else $HTTP["host"] =~ "^something.domain.com$" {
    # ....
} else $HTTP["host"] =~ ".*" {
    url.redirect-code=404
    url.redirect = ( ".*" => "http://domain.com" )
}
Run Code Online (Sandbox Code Playgroud)