Назад | Перейти на главную страницу

Nginx переписывает URL-адрес запроса, перенаправляет и обслуживает контент

Пользователь 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