nginx PHP用户配置文件重写
我正在尝试将我的url配置文件url重写为干净的,不包含参数,至少对用户来说是这样。我正在使用一个nginx服务器,在让它工作时遇到了一些问题 网站示例: 个人资料链接: 工作原理: 我想工作的是: 我的网站配置中的代码块:nginx PHP用户配置文件重写,php,nginx,url-rewriting,Php,Nginx,Url Rewriting,我正在尝试将我的url配置文件url重写为干净的,不包含参数,至少对用户来说是这样。我正在使用一个nginx服务器,在让它工作时遇到了一些问题 网站示例: 个人资料链接: 工作原理: 我想工作的是: 我的网站配置中的代码块: location /subfolder/ { if ($query_string ~ "^username=([A-Za-z0-9]+)$"){ rewrite ^/profile.php$ http://website.com/subfol
location /subfolder/ {
if ($query_string ~ "^username=([A-Za-z0-9]+)$"){
rewrite ^/profile.php$ http://website.com/subfolder/%1 redirect;
}
}
你的重定向几乎是正确的。只是一些表面上的改变
location = /subfolder/profile.php {
if ($arg_username) {
return 301 /subfolder/$arg_username/;
}
fastcgi_pass 127.0.0.1:9001;
include fastcgi_params;
}
现在,regilero告诉我们,您需要解析/subfolder/Username/inside脚本,或者您可以通过nginx来完成
location ~ ^/subfolder/(?<username>.+)/$ {
rewrite ^(.*)$ /subfolder/profile.php?username=$username break;
fastcgi_pass 127.0.0.1:9001;
include fastcgi_params;
fastcgi_param REQUEST_URI $uri$is_args$args;
}
2个重要注意事项:重写中断关键字以防止重定向循环;fastcgi_param REQUEST_URI在fastcgi_params中通常是$REQUEST_URI,但它是原始URI,因此我们需要更改它。只有一个提示,您正在做相反的事情,您尝试在内部用查询字符串重写请求,使PHP无法理解。您需要在PHP代码中编写最终URL,并在Nginx内部管理从这个新URL到查询字符串版本的重写。