2012-05-22 1 views
6

Я изо всех сил пытаюсь создать соответствующие 301 переадресации для сайта, который изначально был построен с использованием строк запроса. Старая структура URL выглядит следующим образом:Удалить строки запроса из 301 redirect

http://www.oldsite.com/about/index.cfm?fuseaction=cor_av&artID=5049 

Я хочу, чтобы перенаправить всю вложенную папку (с именем «о») на новую страницу на новом домене. URL нового домена выглядит следующим образом:

http://www.newsite.com/info 

Итак, я создал редирект, который выглядит следующим образом:

redirectMatch 301 ^/about/ http://www.newsite.com/info 

Это перенаправляет просто отлично, но это сохранение исходной строки URL прилагается, так новый URL заканчивает тем, как это в браузере:

http://www.newsite.com/info/?fuseaction=cor_av&artID=5049 

Я определенно не хватает из Apache/301 эксперта ВЗ знаю, как это исправить. Я просто хочу снять все с себя? на.

Действительно оцените любую помощь.

ответ

28

два варианта:

redirectMatch 301 ^/about/ http://www.newsite.com/info? 

или:

RewriteEngine on 
RewriteRule ^about/(.*) http://www.newsite.com/info? [L,R=301] 

знак вопроса в конце, кажется, критический бит. Во-вторых один выглядит немного чище (первый оставляет знак вопроса в конце вашего URL)

+0

Спасибо! Это сработало для меня. – Ash

+3

Обратите внимание, что на Apache> = 2.4 вы можете использовать флаг QSD вместо добавления вопросительного знака: 'RewriteRule^about /(.*) http://www.newsite.com/info [' QSD', L , R = 301] ' –

0

Try, чтобы добавить этот код в .htaccess, что указанный для oldsite.com:

RewriteCond %{REQUEST_URI} ^/about/index.cfm$ 
RewriteRule ^(.+) http://www.newsite.com/info/ [R=301,QSA] 

Последующие?

+1

Нет,' QSA' ** a ** переносит старую строку запроса на новый url. Для ** d ** iscard it, используйте флаг 'QSD' (apache> = 2.4) или просто добавьте'? ', Как в принятом ответе. См. [Флаги Apache RewriteRule] (http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa) – dennis