我对这一个感到非常困惑。它可能是愚蠢的东西,我一整天都想念它!无论如何,我在网站的nginx配置中设置了这个重写规则:
location / {
root /srv/www/site.co.uk/www;
index index.html index.htm index.php;
rewrite ^/(.*)/index.html$ http://site.co.uk/$1/ permanent;
rewrite ^/index.html$ http://site.co.uk/ permanent;
}
当我去:
..然后它正确发送到:
如果我评论这两个重写规则,重新启动nginx,然后重试...页面加载正常!
谁能看到我哪里出错了?也许我只是在失明!
答案 0 :(得分:1)
你构建了一个重写循环。
index
指令有效地生成内容重写/index.html
每当显示带有/
的结尾的网址时。
打破循环的一种方法是仅在外部网址包含rewrite
时应用index.html
规则。变量$request_uri
包含外部URL,可以使用if
指令进行测试。有关if
的信息,请参阅this caution。
if ($request_uri ~* "/index\.html(?|$)") {
rewrite ^(.*/)index\.html$ $scheme://$server_name$1 permanent;
}
location / {
root /srv/www/site.co.uk/www;
index index.html index.htm index.php;
}