如果有一种方法可以不使用别名来完成这个典型任务,我完全赞成。
我希望 URL 上的所有请求都/minesweeper/*
从与其他请求完全不同的目录中提取。以下配置有效,文件已提供,但 MIME 类型为 application/octet-stream,而不是应有的类型(即 text/css)。如果 MIME 类型不正确,Web 浏览器就无法呈现文档中的 CSS 样式。
nginx.conf:
http {
index index.html
include /etc/nginx/mime.types;
default_type application/octet-stream;
...
}
virtual.conf:
server {
listen *:80;
server_name djmp.org www.djmp.org;
root /home/devsites/djmp.org/public_html/;
index index.html;
location ~ ^/minesweeper($|/.*) {
alias /home/michael/sites/minesweeper$1;
}
}
答案1
我通过不使用别名解决了这个问题。另外,我必须删除 Chrome 中的缓存,否则它实际上无法获取新的 MIME 类型!我在 Firefox 中检查了一下,它成功了。
server {
listen *:80;
server_name djmp.org www.djmp.org;
root /home/devsites/djmp.org/public_html/;
index index.html;
include /etc/nginx/mime.types;
location /minesweeper {
root /home/michael/sites/; # choose the parent directory here
index index.html index.htm;
}
}
答案2
使用alias
就可以了,但是你不需要上面那个正则表达式。
location /minesweeper/ {
alias /home/michael/sites/minesweeper/;
}