Welcome! Log In Create A New Profile

Advanced

Подскажите хороший реврайт GET-параметров

February 08, 2012 06:07AM
Здравствуйте!

Появилась задача сделать реврайт GET-параметров для SEO. Хочется не наступать на грабли плохих конфигов, поэтому я прошу подсказать знатоков правильные решения.

www.site.ru/katalog/products/path/to/category/?act=srch&catid=100&pr=Producer_Name&pf=1&subcats=1
www.site.ru/katalog/products/path/to/category?act=srch&catid=100&pr=Producer_Name&pf=1&subcats=1
в
www.site.ru/katalog/products/path/to/category/Producer_Name

и

www.site.ru/katalog/products/path/to/category/?=&act=srch&catid=100&pr=Producer_Name&ffv=1&pf=1&subcats=1
www.site.ru/katalog/products/path/to/category?=&act=srch&catid=100&pr=Producer_Name&ffv=1&pf=1&subcats=1
в
www.site.ru/katalog/products/path/to/category/Producer_Name

На апаче такая задача решилась так:

RewriteCond %{REQUEST_URI} ^/katalog/products/(?:.*)(?:/?)$
RewriteCond %{QUERY_STRING} ^act=srch&catid=(?:.*)&pr=(.*)&pf=1&subcats=1$ [OR]
RewriteCond %{QUERY_STRING} ^=&act=srch&catid=(?:.*)&pr=(.*)&ffv=1&pf=1&subcats=1$
RewriteRule ^(.*?)(?:/?)$ http://www.site.ru/$1/%1? [L,R=301]

Вопрос: можно ли перенести это в nginx и если да, то как эффективнее это сделать?

Конфиг сервера простой:

server {
listen 192.168.1.1:80;
server_name www.site.ru;
access_log /home/htdocs/www.site.ru/logs/nginx.log;
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://backend;
}
}

По идее нужно создать локейшн для /katalog/products/(?:.*)(?:/?) с rewrite внутри. Но тогда возникает вопрос - как собрать бэклинки в rewrite $1 от локейшена и %1 от GET параметра из, допустим, if ($args ~* %reg%)
Subject Author Posted

Подскажите хороший реврайт GET-параметров

nikolayb February 08, 2012 06:07AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 181
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready