2012-06-11 2 views
0

Проблема, с которой я столкнулась, - это повторы, повторяющиеся через перенаправление. I.e., всякий раз, когда я пытаюсь перенаправить URL-адрес типаСтроки постоянных запросов передаются в htaccess (mod_rewrite)

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product [L,R=301] 

это прекрасно работает - проблем нет.

Однако, когда я пытаюсь это с чем-нибудь с строки запроса, например:

RewriteRule ^oldsite/product/productname.aspx?=QUERYSTRING http://subdomain.newsite.com/product [L,R=301] 

редирект работает, но я в конечном итоге следующий результат, когда я проверить его с помощью проверки заголовка:

http://subdomain.newsite.com/product?=QUERYSTRING 

ie - он передает запрос с старого URL-адреса, и я не хочу этого.

Я проверил кучу ресурсов, но не могу найти простого решения. Есть ли флаг, отсутствующий в квадратных скобках параметров? (Извините, если я использую неправильную терминологию, новую для mod_rewrite.)

ответ

1

Если вы добавили? для вашей целевой URL, строка запроса будет удалена из перенаправления:

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301] 
0

Да, строка запроса автоматически копируется на новый URL-адрес даже перенаправлять до тех пор, пока вы не сделали никаких изменений в ней (например, новом URL не содержит строки запроса).

Например:/register ->/login.php?action=register - результат всегда будет /login.php?action=register даже если оригинальный URL будет /register?say=bla-bla; , но для /register ->/login.php строка запроса всегда будет скопирована, поэтому /register?say=bla-bla станет /login.php?say=bla-bla.

Итак, что нужно сделать? Вам нужно указать строку запроса - в вашем случае строка запроса должна быть пустой.

Как это сделать? Просто добавьте ? в конце нового URL:

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301]