Nginx 重写查询 URL,重定向并提供内容

Nginx 重写查询 URL,重定向并提供内容

由于我是 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

相关内容