Не работает 301 редирект

Хомячок

Хранитель порядка
Регистрация
10 Апр 2008
Сообщения
184
Реакции
576
Здравствуйте! Пытаюсь сделать 301 редирект старых ссылок на новые, но ничего не работает:

Redirect 301 /index.php?do=showanket&id=56 Для просмотра ссылки Войди или Зарегистрируйся

В чем может быть причина?
 
site.ru/path?query
Redirect позволяет сравнивать с шаблоном только /path т.е только то что идет до знака вопроса. Тут поможет RewriteRule.
Вставлять сразу после RewriteEngine On
Код:
RewriteCond %{QUERY_STRING} =do=showanket&id=56
RewriteRule ^index\.php http://new-domain.ru/anketa-ira-56.html? [R=301,L]
Или так
Код:
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} =/index.php?do=showanket&id=56
RewriteRule ^ http://new-domain.ru/anketa-ira-56.html? [R=301,L]
 
Попробуй следующее:
Код:
## В начало htaccess ставишь (если нету)
RewriteEngine On
# В некоторых случаях может потребоваться, но далеко не всегда
RewriteBase /

##Потом пробуешь это в любом месте после...
RedirectPermanent /index.php?do=showanket&id=56 http://new-domain.ru/anketa-ira-56.html

PS: просьба проверить работоспособность вариантов от пользователя lag, мне очень любопытно будут ли работать...
 
А что именно в тех конструкциях вызывает вопросы ?
в этом примере
Код:
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} =/index.php?do=showanket&id=56
интересует конструкция =/ вначале... уже много раз опытным путём убеждался в том, что в REQUEST_URI начального / в урлах нету. Но возможно будет работать со знаком = в начале?

В этом примере
Код:
RewriteCond %{QUERY_STRING} =do=showanket&id=56
Интересует работоспособность с начальным знаком =. Я такой конструкции нигде раньше не встречал просто, вот и интересно...
Также интересно как себя поведет это правило при такой конструкции строки параметров:
Код:
site.ru/index.php?something=do=showanket&id=56

В общем суть вопроса именно в начальном знаке = - как правила редиректов с ним работают...
 
В официальной документации это давно описано Для просмотра ссылки Войди или Зарегистрируйся
  • '=CondPattern' (lexicographically equal)
    Treats the CondPattern as a plain string and compares it lexicographically to TestString. True if TestString is lexicographically equal to CondPattern (the two strings are exactly equal, character for character). If CondPattern is "" (two quotation marks) this compares TestString to the empty string.

Шаблон сравнивается не как регулярное выражение, а как обычная строка.
 
  • Нравится
Реакции: UJy
А относительно '>CondPattern' и '<CondPattern' можете растолковать? Когда они срабатывают, или как рассматриваются?
 
Лексически больше, меньше. Например: abc > abb вернет true
 
  • Нравится
Реакции: UJy
Проверил, работают 2 варианта, описанные lag. RedirectPermanent и Redirect 301 тут не работают, почему описано в том же сообщении с верными вариантами. Кстати варианты с %{QUERY_STRING} я пробовал до этого, но добился только зацикленной переадресации! Но сейчас все ок, спасибо за помощь!
 
Да, вот только сейчас удалось протестить норм, домен не работал основной некоторое время. Получается что из-за вот этой записи образуется бесконечная переадресация, как можно поправить?

Это ЧПУ для новых страниц, когда убираю эту строку, уходит бесконечная переадресация, но новые страницы не работают(

Вот весь реальный код .htaccess если надо (вырезаны только неважные тут конструкции DLE), примеры выше были изменены из этических соображений, смотреть только 18+
 
Последнее редактирование:
Назад
Сверху