Подскажите хороший реврайт GET-параметров
nikolayb
nginx-forum на nginx.us
Ср Фев 8 11:07:33 UTC 2012
Здравствуйте!
Появилась задача сделать реврайт
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%)
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,222103,222103#msg-222103
Подробная информация о списке рассылки nginx-ru