У меня есть несколько доменов, настроенных на моем сервере Ubuntu, которые используют Lighttpd. У меня есть домены с подстановочными знаками, и я хочу, чтобы неиспользуемые поддомены возвращали 404 вместо 200 и отображали обычный домен. Я обратил внимание на эту проблему, потому что некоторые менее опытные поисковые системы (Bing, Baidu, mail.ru) индексируют мой сайт со странными поддоменами.

Я нашел свой вопрос, заданный для Apache здесь: Wildcard DNS, VirtualHosts на apache2, 404 для неиспользуемых поддоменов

Однако я ничего не нашел для Lighttpd.

Я хочу , www.example.com/*чтобы 301перенаправить example.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 #

В идеале я хотел бы иметь универсальное правило, согласно которому все неиспользуемые поддомены для всех доменов на сервере возвращаются 404, как при перенаправлении www. Я, честно говоря, не очень хорошо понимаю файлы конфигурации Lighttpd или регулярные выражения.

answer

Вы можете использовать небольшую хитрость, как показано на devsite.pl .

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