В многочисленных статьях по 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”»
Вообще геморойная штука… Не понимаю зачем его впринципе втыкать…