NGinx 重写规则和 post 参数

NGinx 重写规则和 post 参数

我有一个网站,使用 CodeIgniter 并在 NGinx 下运行。

我用了这些重写规则清理 URL,并从 URL 中删除 index.php。

不幸的是,我在向控制器发送 POST 参数的 AJAX 查询中遇到了问题,因为控制器没有收到任何参数。

使用 Firebug Lite,我可以看到我向控制器提供了正确的 POST 参数,但是当我在控制器中打印它们时,没有任何内容被打印。

我猜这是来自重写规则,它似乎没有沿着 URL 传递参数,但我不知道如何解决这个问题。

有人有主意吗?

以下是重写规则,将它们放在这里而不是其他网站上可能会更容易:

if ($host ~* ^www\.(.*))
{
    set $host_without_www $1;
    rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}

# canonicalize codeigniter url end points
# if your default controller is something other than "welcome" you should change the following
if ($request_uri ~* ^(/welcome(/index)?|/index(.php)?)/?$)
{
    rewrite ^(.*)$ / permanent;
}

# removes trailing "index" from all controllers
if ($request_uri ~* index/?$)
{
    rewrite ^/(.*)/index/?$ /$1 permanent;
}

# removes trailing slashes (prevents SEO duplicate content issues)
if (!-d $request_filename)
{
    rewrite ^/(.+)/$ /$1 permanent;
}

# removes access to "system" folder, also allows a "System.php" controller
if ($request_uri ~* ^/system)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}

# unless the request is for a valid file (image, js, css, etc.), send to bootstrap
if (!-e $request_filename)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}

谢谢!

答案1

我认为,使用重写(如在 apache 中)不会转发帖子数据,而是尝试将 nginx 配置为前端代理

相关内容