Пользователь Apache здесь не очень знаком с nginx :)
Например, такой URL
testpage.no/products?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;
}
Скорее:
location /products {
if ($arg_test_category = 434 ) {
return 301 testpage.no/testcategory;
}
}
Я рекомендую вам использовать «карту». «карта» должна быть в http-разделе nginx.conf. Что-то вроде этого:
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, я определил «карту». Если агрумент равен 434, тогда var $ rwurl = "testcategory". В разделе сервера, если $ rwurl - это что-то, тогда 301 http://example.com/$ rwurl. Дальше обычный конфиг для nginx и php_fpm. Подробнее о карте читайте здесь: https://nginx.org/en/docs/http/ngx_http_map_module.html