Я установил простой виртуальный хостинг с помощью модуля Lighttpd simple_vhost и хочу сделать постоянное перенаправление 301 с www на не-www.
Вот наиболее важные части моего файла конфигурации:
server.modules = (
"mod_simple_vhost",
"mod_redirect",
)
simple-vhost.server-root = "/Websites/"
$HTTP["host"] =~ "^www\.(.*)$" {
url.redirect = (
"^/(.*)" => "http://%1/$1",
)
}
Блок перенаправления взят из документации Lighttpd как есть, но он вообще не работает. В документации модуля simple_vhost упоминается небольшая трудность:
Вы должны иметь в виду, что условные выражения и simple-vhost мешают друг другу.
Я пробовал предложенное там решение (http://redmine.lighttpd.net/projects/1/wiki/Docs_ModSimpleVhost), но все равно безуспешно:
$HTTP["host"] != "www.example.org" {
simple-vhost.server-root = "/Websites"
simple-vhost.default-host = "example.org"
}
$HTTP["host"] == "www.example.org" {
server.document-root = "/Websites/example.org"
}
Как правильно выполнять перенаправление с www на не-www при использовании виртуальных хостов?
Вот мой полный файл конфигурации.
server.modules = (
"mod_access",
"mod_simple_vhost",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_redirect",
"mod_cgi"
)
server.follow-symlink = "enable"
server.document-root = "/Websites"
server.errorlog = "/Websites/error.log"
server.breakagelog = "/Websites/breakage.log"
index-file.names = ("index.html")
accesslog.filename = "/Websites/access.log"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl")
server.port = 80
server.bind = "10.20.30.40"
## to help the rc.scripts
server.pid-file = "/var/run/lighttpd.pid"
## virtual directory listings
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
server.username = "lighttpd"
server.groupname = "lighttpd"
#### compress module
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html", "application/x-javascript", "text/css")
#### external configuration files
## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
## load enabled configuration files,
## read /etc/lighttpd/conf-available/README first
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
# Simple virtual host.
$HTTP["host"] != "www.example.com" {
simple-vhost.server-root = "/Websites/"
}
$HTTP["host"] == "www.example.com" {
server.document-root = "/Websites/example.com/"
}
simple-vhost.default-host = "example.org"
уже позаботится о субдомене www.example.org (если папка для него не существует).
в остальном оба фрагмента конфигурации выглядят хорошо; но вы не вставили полную конфигурацию, включения отсутствуют. типы пантомимы, вероятно, не важны, но
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
может многое.
lighttpd -p -f /etc/lighttpd/lighttpd.conf
показывает полную конфигурацию.
также, как указано в комментариях, расскажите нам, как вы тестировали (что означает «вообще не работает»?). проверьте с помощью curl, чтобы убедиться, что кеш вашего браузера не является проблемой.
посмотри на http://redmine.lighttpd.net/projects/lighttpd/wiki/DebugVariables слишком.