我遇到了 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
将更具包容性。