除某些子目录请求外,将所有请求重写到 index.php

除某些子目录请求外,将所有请求重写到 index.php

我想重写所有请求/index.php,除了/css/*/js/*

这是我的原始配置

location / {
    try_files $uri /index.php$is_args$args;
}

可以,但是会让我直接访问所有文件。我试过这个

location / {
    rewrite ^(.+)$ /index.php break;
}

但无法解决 PHP 解析中断等奇怪错误。在我让/index.php重写工作后,我想我应该做一些类似的事情location /css/ { .. },但我不太确定。

有办法解决这个问题吗?谢谢。

答案1

实际上,在我发布这个问题后立即就找到了答案。

location ~ \.php$ {
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi_params;
}

location /css/ {}
location / {
    rewrite ^ /index.php last;
}

诀窍似乎是将 phplocation置于其他内容之上。

相关内容