我有一个以example.com为根的conf文件。在example.com目录中,有一个html,css,img和js文件夹。据我所知,这与传统的html目录不同。我尝试了很多不同的配置(使用基于文件类型,变量等的正则表达式),但我总是得到太多的重定向错误。任何人都可以为这种类型的目录结构提供良好的conf文件帮助吗?这是我目前的conf文件。
server {
listen 80 default_server;
listen [::]:80 default_server;
# return 301 https://$server_name$request_uri;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name www.example.com example.com;
root /var/www/www.example.com/;
index index.php index.html;
client_max_body_size 100m;
error_page 404 = error.html?error=404;
location ~ /.well-known {
allow all;
}
location / {
location ~* \.(html|php)$ {
root html/;
}
location ~* \.css$ {
root css/;
}
location ~* \.js$ {
root js/;
}
location ~* \.(png|jpeg|gif)$ {
root img/;
}
try_files $uri =404;
}
}
提前感谢您的帮助!
答案 0 :(得分:0)
以下是我最终使用的配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
# return 301 https://$server_name$request_uri;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name www.example.com example.com;
root /var/www/www.example.com/;
index index.php index.html;
client_max_body_size 100m;
error_page 404 = /html/error.html?error=404;
location ~ /.well-known {
allow all;
}
location = / {
try_files /html/index.html =404;
}
location / {
location ~* \.(html|php)$ {
try_files $uri /html/$uri =404;
}
location ~* \.css$ {
try_files $uri /css/$uri =404;
}
location ~* \.js$ {
try_files $uri /js/$uri =404;
}
location ~* \.(png|jpeg|gif)$ {
try_files $uri /img/$uri =404;
}
try_files $uri =404;
}
}
我的问题是我的所有重定向都使用了相对路径(例如try_files html / $ uri)而不是从站点根目录(/ html / $ uri)的绝对路径。这导致重定向,如/ html / html / html / ...
我认为如果我使用绝对路径,那么它对于服务器的根来说是绝对的,而不是网站。
我现在唯一的问题是我的错误页面上的参数重定向(?error = 404)不适用于绝对路径,但这并不是一件大事。