NginX 重定向无法正常工作

NginX 重定向无法正常工作

我为 NginX 设置了一个重定向,如下所示:

location / {
   try_files $uri $uri/ @rewrite;
}

location @rewrite {
    rewrite ^/(.*)$ /index.php?permalink=$1 last;
}

它对数千个链接运行良好,但对少数链接则不行

一些不断抛出 404 错误的链接是:

  • 个人资料/monico
  • 个人资料/hotstar
  • 个人资料/jongz
  • 简介/奇科
  • 个人资料/nagz
  • 简介/mico
  • 简介/明星

对于数千个其他 profile/* 链接,它工作正常。我尝试通过以下方式访问上述个人资料:

index.php?permalink=profile/jongz

而且它运行良好。因此我推测一定是配置错误或其他原因导致 nginX 抛出 404 - 文件未找到错误,而不是继续rewrite运行。

这些链接是否包含一些字符或字符组合,从而阻止 nginX 正确重写链接?

答案1

问题出在以下规则:

location ~* .(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
        etag on;
        if_modified_since exact;
        add_header Pragma "public";
        add_header Cache-Control "max-age=31536000, public";
}

不确定为什么它没有在表达式的开头选择点。有人知道答案吗?

相关内容