与this question类似,我遇到的问题是nginx重写不能很好地播放。
这是我的nginx conf:
server {
listen 80;
server_name myserver.com www.myserver.com;
index index.html;
root /var/www/myserver.com/site/;
location /blog {
alias /var/www/myserver.com/blog/output/;
break;
}
location / {
autoindex on;
try_files $uri $uri/ @htmlext;
}
location /.hg {
deny all;
return 404;
}
location ~ \.html$ {
try_files $uri =404;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
error_page 500 502 503 504 /media/50x.html;
}
问题似乎与location ~ \.html
规则有关。当我删除它时,它工作正常。
我尝试了多种方法,例如:
location /blog
指令移到顶部(它曾经位于底部)break;
置于其中。到目前为止,似乎没有任何效果。在当前配置中,我得到一个404,这也是access.log
中显示的内容。
如何让重写工作隐藏.html
扩展程序,还让我提供blog/output/
内容?
答案 0 :(得分:0)
这个问题最奇怪的答案很可能来自this answer:
location ^~ /blog {
alias /var/www/myserver.com/blog/output/;
break;
}
老实说,即使在阅读documentation之后,我仍然无法解释为什么会这样。我知道它与^~
的正则表达式匹配行为有关,但这就是我所拥有的。