Перейти к содержанию
Форум про Автомобили сегмента A (малолитражки)

Рекомендуемые сообщения

Опубликовано (изменено)

Есть серьёзное неудобство при просмотре старых тем на форуме. Знаю как исправить, но нужно содействие администрации форума. Описание ниже.

 

Проблема.

При просмотре старых тем не работают ссылки в соседние топики. Постоянно жмёшь на ссылки - а там "нет такой страницы".

 

Подробности.

Решил посмотреть в чём дело на примере сообщения Вопросы новичков

Сообщение содержит ссылку на matizclub.ru. Я на форуме недавно и не в курсе его истории. Судя по всему, раньше форум "жил" на другом домене, в результате ссылки перестали работать.

Методом пристального взгляда определил правильную ссылку: Герметизация капота

 

Как исправить.

Имея базу сообщений, можно "пройтись" по ней скриптом и перекодировать старые ссылки. Это сделает чтение старых, но от этого не менее полезных тем заметно удобнее.

Исправить вручную конкретное сообщение-пример недостаточно - таких ссылок по форуму весьма много.

Другой вариант исправления - поместить "на старом месте" страницы, которые перенаправляли бы пользователей на корректные новые.

Изменено пользователем aleyush
Опубликовано
......

Решил посмотреть в чём дело на примере сообщения Вопросы новичков

........

 

Эту исправил. Спасибо.

Вопросы новичков

Методом...хм-м :lol: Просто, исправил и всё. :shock:

Опубликовано
Эту исправил. Спасибо.

Вопросы новичков

Методом...хм-м :lol: Просто, исправил и всё. :shock:

Я уже обратил внимание - сейчас редактор настроен таким образом, что он при сохранении старые ссылки меняет на новые.

 

Но только в той же теме таких ссылок не одна и не две, а есть ещё и другие темы...

Опубликовано
...Но только в той же теме таких ссылок не одна и не две, а есть ещё и другие темы...

Только рук всего две. :shock: А времени и того меньше.

Опубликовано

Так я потому исходно и обращался к администрации, имеющей доступ к базе данных форума. Вычитывать архив за несколько лет и руками править - удовольствие ещё то, нужно просто скриптик прогнать.

Опубликовано

Вы можете написать скиптик? Все скажут огромное спасибо за это.

ТЗ на SQL запрос (PHP скрипт):

- выбрать строки в которых содержатся слова matizclub.net/

- заменить matizclub.net/ -> matizclub.net/

- данные обрабатывать пакетно для PHP, для SQL ставить LIMIT (по 30 строк за раз)

 

Желающему сделать напишу названия таблиц и полей.

Презент от клуба обещаю.

Опубликовано (изменено)

Нужен именно php или можно подключиться напрямую к базе?

 

Какая СУБД используется?

 

На MSSQL запрос выглядел бы примерно так:

 

update messages_table set message_body_column = replace(message_body_column, 'matizclub.ru//forum/', 'matizclub.net/') where message_body_column like '%matizclub.ru//forum/%'

 

Если хочется кусками, то можно так:

 

update messages_table set message_body_column = replace(message_body_column, 'matizclub.ru//forum/', 'matizclub.net/') where message_id_column in

(select top 30 message_id_column from messages_table where message_body_column like '%matizclub.ru//forum/%')

 

P.S. Двойные слэши вставил, так как иначе редактор форума меняет matizclub.ru//forum/ на matizclub.net/ :drinks:

 

P.P.S. Кстати, такой замены недостаточно, нужен ещё минимум один паттерн (смотри Вопросы новичков)

Изменено пользователем aleyush
Опубликовано

База естественно MySQL.

Вьютопик можно вести только на 404, тут вариантов никаких. Или ставитьт паттерн просто на matizclub.net.

Опубликовано (изменено)

Какая версия MySQL? Подзапросы он не с первых версий стал поддерживать просто.

 

Если уже поддерживает, то

 

update messages_table set message_body_column = replace(message_body_column, 'matizclub.ru//forum/', 'matizclub.net/') where message_id_column in

(select message_id_column from messages_table where message_body_column like '%matizclub.ru//forum/%' limit 30)

 

P.S. Можно даже проще, оказывается:

update messages_table set message_body_column = replace(message_body_column, 'matizclub.ru//forum/', 'matizclub.net/') where message_body_column like '%matizclub.ru//forum/%' limit 30

 

Последний вариант без подзапроса работает с версии MySQL 3.23 - не думаю, что у Вас стоит что-то более древнее.

Изменено пользователем aleyush
Опубликовано
5.0.37

 

Тогда должен сработать любой из вариантов в предыдущем сообщении.

Опубликовано

Так что, сможете прогнать запрос? В него нужно только подставить имя таблицы сообщений, имя поля с телом сообщения и заменить двойные слеши на одинарные.

Опубликовано (изменено)

да не надо заморачиваться с запросами, скоро выложу htaccess, положете в папочку и будет перекидывать на matizclub.net в нужную тему :oops:

 

итак,

1) отыскиваем в папке домена matizclub.ru (в корне!) файл .htaccess, если его нет - создаем.

2) находим в нем строчку:

RewriteEngine on

(если такой нет - пишем)

3) после нее - вставляем:

RewriteRule ^forum/?(.*)$ http://www.matizclub.net/$1 [L,R=permanent]

4) сохраняем файл, заливаем на сервер в текстовом формате

 

готово :)

от варианта с запросами отличается простотой и более правильным подходом с точки зрения SEO.

можно проверить на моем сайте, зайдите по ссылке и попадете на этот форум: http://www.404studio.ru/forum/index.php?s...mp;#entry154880

Изменено пользователем Roden
Опубликовано

Всё отлично работает. Всё сделал.

Изначально искал вариант именно с mod_rewrite, но не смог найти работающего решения. Поиски и вопросы на форумах веб-мастеров ни к чему также не привели.

С точки зрения SEO вариант самый походящий, т.к. ссылки на сайт могут быть не только на форуме, но и на внешних ресурсах. Так мы приведем люде в нужное место в любом случае.

 

2 Roden

Нужен еще одна замена, шаблон такой:

http://www.matizclub.net/viewtopic.php?t=XXXXX

http://www.matizclub.net/index.php?showtopic=XXXXX

где XXXXX номер топика.

 

2 Roden и aleyush

Как и обещал от лица администрации клуба готов бесплатно прислать по комплекту светоотражающих наклеек (большую, маленькую и машинку). Полные почтовые адреса и ФИО получателя пишите в личку.

Также выражаю благодарность от лица администрации и остальных пользователей форума которым теперь станет легче работать со старыми темами.

 

Во, нашел правило которое я пытался прописать раньше.

RewriteRule ^/~(.+) http://www.matizclub.net/~$1 [R,L]

Опубликовано

А про вторую замену (viewtopic) я как раз писал выше, в 7 сообщении темы. :shock:

 

Согласен, что вставить на сервере перенаправление на новые страницы более правильно, так как заодно перенаправит и старые закладки в браузерах посетителей. Но всё-таки одно другому не мешает, можно и в базе перекодировать. :shock:

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...

Важная информация

Соглашение об обработке персональных данных