aleyush 0 Опубликовано: 11 ноября, 2008 Share Опубликовано: 11 ноября, 2008 (изменено) Есть серьёзное неудобство при просмотре старых тем на форуме. Знаю как исправить, но нужно содействие администрации форума. Описание ниже. Проблема. При просмотре старых тем не работают ссылки в соседние топики. Постоянно жмёшь на ссылки - а там "нет такой страницы". Подробности. Решил посмотреть в чём дело на примере сообщения Вопросы новичков Сообщение содержит ссылку на matizclub.ru. Я на форуме недавно и не в курсе его истории. Судя по всему, раньше форум "жил" на другом домене, в результате ссылки перестали работать. Методом пристального взгляда определил правильную ссылку: Герметизация капота Как исправить. Имея базу сообщений, можно "пройтись" по ней скриптом и перекодировать старые ссылки. Это сделает чтение старых, но от этого не менее полезных тем заметно удобнее. Исправить вручную конкретное сообщение-пример недостаточно - таких ссылок по форуму весьма много. Другой вариант исправления - поместить "на старом месте" страницы, которые перенаправляли бы пользователей на корректные новые. Изменено 11 ноября, 2008 пользователем aleyush Ссылка на сообщение Поделиться на других сайтах
ruta66 0 Опубликовано: 11 ноября, 2008 Share Опубликовано: 11 ноября, 2008 ......Решил посмотреть в чём дело на примере сообщения Вопросы новичков ........ Эту исправил. Спасибо. Вопросы новичков Методом...хм-м :lol: Просто, исправил и всё. :shock: Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 11 ноября, 2008 Автор Share Опубликовано: 11 ноября, 2008 Эту исправил. Спасибо.Вопросы новичков Методом...хм-м :lol: Просто, исправил и всё. :shock: Я уже обратил внимание - сейчас редактор настроен таким образом, что он при сохранении старые ссылки меняет на новые. Но только в той же теме таких ссылок не одна и не две, а есть ещё и другие темы... Ссылка на сообщение Поделиться на других сайтах
ruta66 0 Опубликовано: 11 ноября, 2008 Share Опубликовано: 11 ноября, 2008 ...Но только в той же теме таких ссылок не одна и не две, а есть ещё и другие темы... Только рук всего две. :shock: А времени и того меньше. Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 11 ноября, 2008 Автор Share Опубликовано: 11 ноября, 2008 Так я потому исходно и обращался к администрации, имеющей доступ к базе данных форума. Вычитывать архив за несколько лет и руками править - удовольствие ещё то, нужно просто скриптик прогнать. Ссылка на сообщение Поделиться на других сайтах
WineX 0 Опубликовано: 12 ноября, 2008 Share Опубликовано: 12 ноября, 2008 Вы можете написать скиптик? Все скажут огромное спасибо за это. ТЗ на SQL запрос (PHP скрипт): - выбрать строки в которых содержатся слова matizclub.net/ - заменить matizclub.net/ -> matizclub.net/ - данные обрабатывать пакетно для PHP, для SQL ставить LIMIT (по 30 строк за раз) Желающему сделать напишу названия таблиц и полей. Презент от клуба обещаю. Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 12 ноября, 2008 Автор Share Опубликовано: 12 ноября, 2008 (изменено) Нужен именно 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. Кстати, такой замены недостаточно, нужен ещё минимум один паттерн (смотри Вопросы новичков) Изменено 12 ноября, 2008 пользователем aleyush Ссылка на сообщение Поделиться на других сайтах
WineX 0 Опубликовано: 12 ноября, 2008 Share Опубликовано: 12 ноября, 2008 База естественно MySQL. Вьютопик можно вести только на 404, тут вариантов никаких. Или ставитьт паттерн просто на matizclub.net. Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 12 ноября, 2008 Автор Share Опубликовано: 12 ноября, 2008 (изменено) Какая версия 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 - не думаю, что у Вас стоит что-то более древнее. Изменено 12 ноября, 2008 пользователем aleyush Ссылка на сообщение Поделиться на других сайтах
WineX 0 Опубликовано: 13 ноября, 2008 Share Опубликовано: 13 ноября, 2008 5.0.37 Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 13 ноября, 2008 Автор Share Опубликовано: 13 ноября, 2008 5.0.37 Тогда должен сработать любой из вариантов в предыдущем сообщении. Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 17 ноября, 2008 Автор Share Опубликовано: 17 ноября, 2008 Так что, сможете прогнать запрос? В него нужно только подставить имя таблицы сообщений, имя поля с телом сообщения и заменить двойные слеши на одинарные. Ссылка на сообщение Поделиться на других сайтах
WineX 0 Опубликовано: 17 ноября, 2008 Share Опубликовано: 17 ноября, 2008 Да, да всё сделаю на днях. Ссылка на сообщение Поделиться на других сайтах
Roden 0 Опубликовано: 19 ноября, 2008 Share Опубликовано: 19 ноября, 2008 (изменено) да не надо заморачиваться с запросами, скоро выложу 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 Изменено 19 ноября, 2008 пользователем Roden Ссылка на сообщение Поделиться на других сайтах
WineX 0 Опубликовано: 27 ноября, 2008 Share Опубликовано: 27 ноября, 2008 Всё отлично работает. Всё сделал. Изначально искал вариант именно с 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] Ссылка на сообщение Поделиться на других сайтах
aleyush 0 Опубликовано: 2 декабря, 2008 Автор Share Опубликовано: 2 декабря, 2008 А про вторую замену (viewtopic) я как раз писал выше, в 7 сообщении темы. :shock: Согласен, что вставить на сервере перенаправление на новые страницы более правильно, так как заодно перенаправит и старые закладки в браузерах посетителей. Но всё-таки одно другому не мешает, можно и в базе перекодировать. :shock: Ссылка на сообщение Поделиться на других сайтах
Рекомендуемые сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас