@onedeadyankee
нуб

Как можно победить подобные битые ссылки?

Здравствуйте
Внезапно выяснилось, что на сайте (modx) люто-бешено плодятся битые ссылки вида

http:/www.site.ru/db.php?j=61&q=689&c=5
http:/www.site.ru/db.php?j=67&s=55&c=5
http:/www.site.ru/db.php?j=45&q=9691&c=5
..
Причина - db.php - самописный костыль, составляющий по ип базу посетителей и заказчиков для сайта.
Почему, хз.
Можно ли победить подобное безобразие редиректом?
Например, сделав переадресацию с этих ссылок на www.site.ru.

RewriteRule ^db.php?(.*)$ http://www.site.ru [L,R=301]
(так правильно, кстати?)

Или подобное решение борьбы с битыми ссылками в корне неправильно?
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
shambler81
@shambler81 Куратор тега htaccess
нет не так все что после вопроса это GET
вам нужно " как сделать редирект с гет параметром"

Или вот так
# 301 --- http://site.ru/cat1/cat2/art.htm?fb_comment_id=12345&start=2  => http://site.ru/cat1/cat2/article.html?start=2
RewriteCond %{QUERY_STRING} (^|&)fb_comment_id\=12345($|&)
RewriteCond %{QUERY_STRING} (^|&)start\=2 ($|&)
RewriteRule ^cat1/cat2/art\.htm$ /cat1/cat2/article.html?start=2 [L,R=301]
Ответ написан
Комментировать
@onedeadyankee Автор вопроса
нуб
нет не так все что после вопроса это GET
вам нужно " как сделать редирект с гет параметром"

спасибо, погуглил про гет параметры

Если кому интересно, то рабочий вариант для ссылок типа http:/www.site.ru/db.php?j=45&q=9691&c=5 у меня получился таким

RewriteCond %{QUERY_STRING} j=(\d+) [NC]
RewriteCond %{QUERY_STRING} q=(\d+) [NC]
RewriteRule .* http://www.site.ru/? [R=301,L]
RewriteRule ^db.php$ http://www.site.ru [L,R=301]

Проверка того, что "j" равно любому числу, а затем "q". для "с" смысла делать нет, он у меня постоянный, поправьте меня если я неверно понял принцип?
Ну и затем просто редирект с db.php на всякий случай
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы