由于我是 Apache 用户,所以对 nginx 不太熟悉 :)
例如这样的网址
testpage.no/产品?test_category=434
如何将此 URL 及其内容重定向到此 URL:
testpage.no/testcategory
这是正确的方法吗?如果不是,我遗漏了什么:
location / {
if ($arg_test_category = 434 ) {
return 301 testpage.no/testcategory;
}
try_files $uri $uri/ /index.php$is_args$args;
}
答案1
更像:
location /products {
if ($arg_test_category = 434 ) {
return 301 testpage.no/testcategory;
}
}
答案2
我建议你使用“map”。“map”应该位于 nginx.conf 的 http 部分。类似这样:
http {
........
map $arg_test_category $rwurl {
default "";
434 "testcategory";
435 "testcategory1";
436 "testcategory2";
}
........
server {
listen 80;
root /var/www/example.com;
if ($rwurl) { return 301 http://example.com/$rwurl; }
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
如您在 http 部分中看到的,我定义了“map”。如果参数是 434,则 var $rwurl =“testcategory”。在服务器部分,如果 $rwurl 是某个值,则 301http://example.com/$rwurl。然后只是 nginx 和 php_fpm 的常规配置。请在此处阅读有关 map 的更多信息:https://nginx.org/en/docs/http/ngx_http_map_module.html