Как удалить строку запроса? - PullRequest
0 голосов
/ 13 ноября 2010

Примечание: я немного говорю по-английски

У меня проблема с mod_rewrite.

Я хочу заменить имя своего сайта, я хочу этот URL

 http://www.oldsite.com/index.php?v=contact 

переписано на URL

http://www.newsite.com/page/contact with 301 rewrite.

Я делаю это так:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} v=contact
RewriteRule ^index.php http://www.newsite.net/page/contact [R=301,L]

Но я получаю запрос http://www.newsite.net/page/contact?v=contact. Я не хочу ?v=contact, я хочу http://www.newsite.net/page/contact.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

Из документации :

Примечание: строка запроса
Шаблон не будет сопоставлен со строкой запроса.Вместо этого вы должны использовать RewriteCond с переменной %{QUERY_STRING}.Однако вы можете создавать URL-адреса в строке подстановки, содержащей часть строки запроса.Просто используйте знак вопроса внутри строки замещения, чтобы указать, что следующий текст должен быть повторно введен в строку запроса. Если вы хотите стереть существующую строку запроса, завершите строку замены только знаком вопроса. Чтобы объединить новую строку запроса со старой, используйте флаг [QSA].

Так что вы, вероятно, должны иметь:

RewriteRule ^index.php http://www.newsite.net/page/contact? [R=301,L]
0 голосов
/ 13 ноября 2010

Согласно этой статье , вы должны написать:

RewriteRule ^index.php http://www.newsite.net/page/contact$1? [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...