RewriteRule, чтобы игнорировать переменную URL - PullRequest
0 голосов
/ 15 декабря 2009

У меня есть несколько страниц, проиндексированных Google, например:

/product.html?affiliateid=142

Я хочу переписать правило 301 для перенаправления на ту же страницу, если есть affiliateid=xxx

Пока у меня есть это:

RewriteCond %{QUERY_STRING}  ^affiliateid=[0-9]+$
RewriteRule ^$ /test.html$ [L,R=301]

Но это не работает, мне нужно избавиться от переменной и как-то получить имя страницы.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2009

Нашли:

RewriteCond% {QUERY_STRING} ^ affiliateid = ([0-9] +) $

RewriteRule ^ (. *) $ / $ 1? [L, NC, R = 301]

Это тот вопросительный знак здесь / $ 1? который сообщает правилу, что нужно завершить перезапись в строке запроса

0 голосов
/ 15 декабря 2009

Необходимо указать пустой запрос в URL-адресе замещения, чтобы исходный запрошенный запрос не добавлялся к новому URL-адресу:

RewriteCond %{QUERY_STRING} ^affiliateid=[0-9]+$
RewriteRule ^ %{REQUEST_URI}? [L,R=301]

И если вы хотите сохранить любой другой параметр запроса, попробуйте это:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)affiliateid=[0-9]+(&+(.*))?$
RewriteRule ^ %{REQUEST_URI}?%1%4 [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...