Я настроил свой lighttpd таким образом, чтобы все поддомены перенаправлялись на мой основной домен следующим образом * .domain.com
-> domain.com
. К сожалению, когда я ввожу поддомен, например www.domain.com
он идет прямо к http://domain.com/site.fcgi/
и буквально разрывает страницу. Когда я исключаю поддомен, он отлично открывает страницу.
Используются следующие настройки lighttpd:
$HTTP["host"] =~ "\.domain\.com(:[0-9]+)?$" {
url.redirect = ("^/(.*)" => "http://domain.com/$1")
}
$HTTP["host"] =~ "^domain\.com(:[0-9]+)?$" {
server.document-root = "/var/www/servers/domain.com/awesomesite"
accesslog.filename = "/var/www/logs/domain.com/access.log"
server.errorlog = "/var/www/logs/domain.com/error.log"
fastcgi.server = (
".fcgi" => (
"main" => (
# Use host / port instead of socket for TCP fastcgi
"bin-path" => "/var/www/servers/domain.com/awesomesite/domain.fcgi",
"socket" => "/tmp/domain.sock",
"check-local" => "disable",
)
),
)
alias.url = (
"/static/" => "/var/www/servers/domain.com/awesomesite/static/",
)
url.rewrite-once = (
"^(/static.*)$" => "$1",
"^(/.*)$" => "/domain.fcgi$1",
)
}
Кроме того, я добавил FORCE_SCRIPT_NAME = ''
к моему settings.py
.
Я не могу понять, в чем причина проблемы, в файлах журнала тоже нечего искать. Я немного потерялся в нейтральной зоне.
url.rewrite-once
срабатывает до url.redirect
, и $HTTP["host"] =~ “domain\.com"
Спички www.domain.com
слишком.
Так он сначала переписывает (например) http://www.domain.com/
внутри http://www.domain.com/domain.fcgi/
а затем перенаправляет клиента на http://domain.com/domain.fcgi/
. Клиент отправляет новый запрос, который затем переписывается на http://domain.com/domain.fcgi/domain.fcgi/
а затем отправили в приложение django.
Решение состоит в том, чтобы второй блок соответствовал только «domain.com», а не субдоменам, т.е. $HTTP["host"] == "domain.com"
(простое сравнение) или $HTTP["host"] =~ "^domain\.com"
(привязанное регулярное выражение).
Еще более строгие регулярные выражения были бы $HTTP["host"] =~ "\.domain\.com(:[0-9]+)?$"
и $HTTP["host"] =~ "^domain\.com(:[0-9]+)?$"