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