UserName900 Posted April 21, 2014 Share Posted April 21, 2014 Возможно ли сделать переадресацию со старых ссылок на новые?Вот старая ссылка - pristavki.su/index.php?topic=1424.0Новая ссылка - pristavki.su/index.php/topic/925-proshivka-ps3-versiia-proshivki-411-kak-ponizit-do-355/Когда переходил с vb на smf у cms в темах было общий id.Там 301 было сделать относительно не сложно и была логикаRewriteCond %{QUERY_STRING} ^t=([0-9]+).*$ RewriteRule ^showthread.php$ /index.php?topic=%1.0 [R=301,L] RewriteCond %{QUERY_STRING} ^f=([0-9]+).*$ RewriteRule ^forumdisplay.php$ /index.php?board=%1.0 [R=301,L] Возможно ли в моей ситуации? Link to comment Share on other sites More sharing options...
siv1987 Posted April 21, 2014 Share Posted April 21, 2014 Возможно только "двойной редирект", так как при включенном чпу обычные ссылки редиректятся на чпу'шные. В таком случае в htaccess можно сделать редирект на обычные, а форум сделает реирект с обычных на чпу. Добавить после RewriteEngine On RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:0|msg) RewriteRule ^index\.php /index.php?showtopic=%1 [R=301,L] RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(\d+) RewriteRule ^index\.php /index.php?showtopic=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^board=(\d+)\.0 RewriteRule ^index\.php /index.php?showforum=%1 [R=301,L] RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+) RewriteRule ^index\.php /index.php?showforum=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+) RewriteRule ^index\.php /index.php?showuser=%1 [R=301,L] или (для тех кто использует чпу) RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:(\d+)|msg) RewriteRule ^index\.php /index.php?showtopic=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+) RewriteRule ^index\.php /index.php?showforum=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+) RewriteRule ^index\.php /index.php?showuser=%1 [R=301,L] 1 Link to comment Share on other sites More sharing options...
UserName900 Posted April 21, 2014 Author Share Posted April 21, 2014 Спасибо что отозвались!Редирект происходит но не на те темы.Допустим тема со старым id 1424, редиректится на новые темы с 1424. А id не соответствует.Получается сработало на половину :) Link to comment Share on other sites More sharing options...
UserName900 Posted April 21, 2014 Author Share Posted April 21, 2014 Попробовал второй код. Тоже редирект по id получается. Link to comment Share on other sites More sharing options...
siv1987 Posted April 21, 2014 Share Posted April 21, 2014 А id не соответствует.Ну это уже другой вопрос. Когда делали конвертацию темам/форумам/пользователям надо было поставить галочку Empty local data?, чтобы при конвертирования сохранить старые ид. По идее в бд есть связь старые-новые ид, но для этого нужно уже писать костыль на php. Попробовал второй код. Тоже редирект по id получаетсяВторой код упрощенная форма первого. Link to comment Share on other sites More sharing options...
UserName900 Posted April 21, 2014 Author Share Posted April 21, 2014 Блин, вот сколько нюансов о которых и не подумаешь. :( id уже не изменить? Link to comment Share on other sites More sharing options...
siv1987 Posted April 21, 2014 Share Posted April 21, 2014 id уже не изменить?Нет. Но в бд есть сопоставление старые-новые ид, можно написать костыль который по старому ид получит новый, а запросы с старых ссылок с помощью htaccess перенаправить на этот обработчик. ПСХотя нет, похоже id все равно не сохраняются, даже если очистить существующие данные в ипб. Link to comment Share on other sites More sharing options...
UserName900 Posted April 21, 2014 Author Share Posted April 21, 2014 Не. Такого не надо. Пусть будет встрясочка сайту. Мож оно и к лучшему. Конечно упаду но думаю что поднимусь.siv1987, спасибо огромное. Вы хороший специалист! Link to comment Share on other sites More sharing options...
siv1987 Posted April 21, 2014 Share Posted April 21, 2014 Собственно сам костыль. 1. Загрузить файл redir.php в корень форума2. Добавить в .htaccess (после RewriteEngine On) RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:(\d+)|msg) RewriteRule ^index\.php /redir.php?showtopic=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+) RewriteRule ^index\.php /redir.php?showforum=%1&st=%2 [R=301,L] RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+) RewriteRule ^index\.php /redir.php?showuser=%1 [R=301,L] redir.php 1 Link to comment Share on other sites More sharing options...
UserName900 Posted April 22, 2014 Author Share Posted April 22, 2014 Это сильно загрузит базу? Вообще есть какие либо последствия для SEO или ещё чего? :)Вы невероятно круты )) Знаете действительно многое. Link to comment Share on other sites More sharing options...
UserName900 Posted April 22, 2014 Author Share Posted April 22, 2014 К сожалению редирект не случился. :D Всё точно сделал как вы сказали сэр. :) Link to comment Share on other sites More sharing options...
siv1987 Posted April 22, 2014 Share Posted April 22, 2014 Для сео есть - склейка старых урлов с новыми. Не говоря уже о пользе для пользователей, которые перешли по старом ссылкам. Проверял, вроде работало. Возможная причина что не правильно определился ид сессии которой был сконвертирован форум. Так как их там можно создавать несколько приходится ставить условие для поиска конкретной последней завершенной сессии. Link to comment Share on other sites More sharing options...
UserName900 Posted April 22, 2014 Author Share Posted April 22, 2014 Редирект был не ошибочный а просто на главную. Обычно отображается главная но ссылка по переходу. Мож это что значит. Link to comment Share on other sites More sharing options...
UserName900 Posted April 23, 2014 Author Share Posted April 23, 2014 Никак не придумать ничего? Link to comment Share on other sites More sharing options...
siv1987 Posted April 23, 2014 Share Posted April 23, 2014 Редирект был не ошибочный а просто на главную.Если редиректит на главную значит - либо не правильно определяется ид сессии конвертации, либо в базе не найдено записи для этого ид. Надеюсь что после завершения конвертации вы сессию не удалили. Файл поправил, но если в бд больше чем одной сессии (Manage Conversions), придется вручную задать ид аппликации в $app = '';Именно id, который можно узнать из таблицы ibf_conv_apps поле app_id 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now