Nginx 位置指令和 php 脚本

Nginx 位置指令和 php 脚本

我遇到了 Nginx location 指令的问题。我需要能够通过 fastcgi 发送任何 URI,以便它最终进入 PHP 框架。但我还想设置一条规则,让任何以 /users 开头的 URI 都被重定向(比如说http://www.google.com)因此,我的做法如下:

    location ~* ^/users*$ {
            rewrite ^ http://www.google.com? permanent;
    }

    location ~* \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_intercept_errors on; # to support 404s for PHP files not found
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }

我可以访问任何 URL,它会通过我使用的 PHP 框架发送,所以这部分工作正常。但是,/users* 重定向不起作用。如果我注释掉第二个位置方向(对于 PHP 文件),/users* 重定向会起作用,但它实际上会先下载 index.php 文件,然后再重定向到http://www.google.com

我怎样才能让它按预期工作?

答案1

正则表达式^/users*$可能与您期望匹配的内容不匹配。类似^/users.*$或 的内容^/users将更具包容性。

相关内容