Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
11 Ноябрь 2011

301 редирект по параметрам URL средствами php, apache, nginx

posted in Администрирование, Полезности, Программирование |

В многочисленных статьях по 301му редиректу обычно используют самые тривиальные случаи — с www на без www, с одной директории на другую и пр.
В моём случае необходимо было метнуть со странички с параметром ?param=value1…. на ?param=value2…. (какие именно писать не буду).
Небольшая сложность в таком подходе в том что ни аппач, ни nginx параметры не считают адресом странички.
С вариантом на php всё как обычно — просто решил его добавить до полноты картины 🙂
С него и начнём как с самого простого, но и самого неэффективного

Выдёргиваем нужный параметр value1 через $_REQUEST меняем что нужно, и редиректим куда нужно

header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: http://……….);
exit();

Далее, вариант с аппачем — регулярное выражение необходимо наложить на QUERY_STRING
Правим .htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^param=value1(.+)$
RewriteRule ^(.*)$ $1?param=value2%1 [R=301,L]

И последний — самый эффективный nginx — тут параметры лежат в переменной $args

if ($args ~* (.*)param=value1(.+)) {
set $args $1param=value2$2;
rewrite ^(.*)$ $1 permanent;
}

У нас один комментарий на запись “301 редирект по параметрам URL средствами php, apache, nginx”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 17.11.2011, Domowoi said:

    Вообще геморойная штука… Не понимаю зачем его впринципе втыкать…

Оставить комментарий