Posted 7 марта, 20159 yr comment_82580 Еще раз всем здравствуйте, снова возникла проблема. На старом форуме стояли ссылки site.ru/t123 | site.ru/f123 Как мне это сделать для ипб? Прочитал эту статью: В версию форума IPB 3.4.5 разработчики включают IP.SEO. Красота получаемых на выходе УРЛОВ, мягко говоря, на любителя Решил их переделать на свой лад, соблюдая каноны интернет прошлого века. Получились короткие ссылки страниц с закрытым слешем в конце: /userid1/ - ссылка на профиль пользователя /f16/ - первая страница подфорума /f16/page2/ - вторая страница подфорума /t103/ - первая страница темы /t103/page2/ - вторая страница темы /t103/page2/#entry727 - ссылка на 727 пост темы /t103/?p=727 - короткий аналог-редирект на 727 пост темы для целей "Поделиться ссылкой" Как видно соблюдается преемственность ссылок в рамках темы / подфорума. По понятным причинам в адрес темы не нужно включать подфорум. Темы могут переноситься из одного подфорума в другой Удаляя с конца ссылки до слеша постепенно получаем главную страницу темы и форума. Возможные параметры, идущие через знак вопроса, могут быть легко отброшены до слеша, так как всё важное у нас заканчивается слешем! Зачем всё это надо: Личные предпочтения и ссылки без дефисов Способ избавиться от дублей страниц в поисковых системах.Упорядоченность в составлении нужного robots.txtЧем короче ссылка, тем меньше вероятность того, что она будет автоматически обрезана до определенного количества символов на сторонних ресурсах.Проще запомнить url и набрать его, например, на мобильном телефоне. Файлы для правки: coreVariables.phpipsRegistry.phppublicOutput.phpsitemapgenerator.phpfurlTemplates.php (из members)furlTemplates.php (из forums)coreVariables.php // Найти: 'varPage' => 'page-', // Заменить на: 'varPage' => 'page', ipsRegistry.php // Найти: preg_match( '#(' . preg_quote( self:_seoTemplates['__data__']['varPage'], '#' ) . '(d+?))(?|' . preg_quote( self:_seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches ); // Заменить на: preg_match( '#(' . preg_quote( self:_seoTemplates['__data__']['varPage'], '#' ) . '(d+?))/(?|' . preg_quote( self:_seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches ); publicOutput.php // Найти: $_page .= $this->seoTemplates['__data__']['varPage'] . $vv; // Заменить на: $_page .= $this->seoTemplates['__data__']['varPage'] . $vv . '/'; // Найти: $_toTest = preg_replace( '#^(.*)/(.)?#', '1/' . $this->seoTemplates['__data__']['varPage'] . $page . '2', $_toTest ); // Заменить на: $_toTest = preg_replace( '#^(.*)/(.)?#', '1/' . $this->seoTemplates['__data__']['varPage'] . $page . '/2', $_toTest ); // Найти: preg_match( '#(' . preg_quote( $this->seoTemplates['__data__']['varPage'], '#' ) . '(d+?))(?|' . preg_quote( $this->seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches ); // Заменить на: preg_match( '#(' . preg_quote( $this->seoTemplates['__data__']['varPage'], '#' ) . '(d+?))/(?|' . preg_quote( $this->seoTemplates['__data__']['varBlock'], '#' ) . ')#', $_toTest, $pageMatches ); sitemapgenerator.php // Найти: $_page .= self:_seoTemplates['__data__']['varPage'] . $vv; // Заменить на: $_page .= self:_seoTemplates['__data__']['varPage'] . $vv . '/'; furlTemplates.php (из members) // Найти: 'showuser' => array( 'app' => 'members', 'allowRedirect' => 1, 'out' => array( '#showuser=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'user/$1-#{__title__}/$2$4' ), 'in' => array( 'regex' => "#^/user/(d+?)-#i", 'matches' => array( array( 'showuser', '$1' ) ) ) ), // Заменить на: 'showuser' => array( 'app' => 'members', 'allowRedirect' => 1, 'out' => array( '#showuser=(d+)((?:&|&)f=(d+))?(&|$)#i', 'userid$1/$2$4' ), 'in' => array( 'regex' => "#^/userid(d+)#i", 'matches' => array( array( 'showuser', '$1' ) ) ) ), furlTemplates.php (из forums) // Найти: $_SEOTEMPLATES = array( 'showannouncement' => array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showannouncement=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'forum-$3/announcement-$1-#{__title__}/$4' ), 'in' => array( 'regex' => '#/forum-(d+?)?/announcement-(d+?)-#i', 'matches' => array( array( 'showannouncement', '$2' ), array( 'f', '$1' ) ) ) ), 'showforum' => array( 'app' => 'forums', 'allowRedirect' => 1, 'isPagesMode' => 1, 'out' => array( '#showforum=(.+?)(&|$)#i', 'forum/$1-#{__title__}/$2' ), 'in' => array( 'regex' => '#^/forum/(d+?)-#i', 'matches' => array( array( 'showforum', '$1' ) ) ) ), 'showtopic' => array( 'app' => 'forums', 'allowRedirect' => 1, 'isPagesMode' => 1, 'out' => array( '#showtopic=(.+?)(#|&|$)#i', 'topic/$1-#{__title__}/$2' ), 'in' => array( 'regex' => '#^/topic/(d+?)-#i', 'matches' => array( array( 'showtopic', '$1' ) ) ) ), 'acteqst' => array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#act=ST(.*?)&t=(.+?)(&|$)#i', 'topic/$2-#{__title__}/$3' ), 'in' => array( 'regex' => '#^notavalidrequest$#i', 'matches' => array( array( 'showtopic', '0' ) ) ) ), 'act=idx' => array( 'app' => 'forums', 'allowRedirect' => 0, 'out' => array( '#act=idx(&|$)#i', 'index$1' ), 'in' => array( 'regex' => '#^/index(/|$|?)#i', 'matches' => array( array( 'act', 'idx' ) ) ) ), ); // Заменить на: $_SEOTEMPLATES = array( 'showannouncement' => array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showannouncement=(d+)((?:&|&)f=(d+))?(&|$)#i', 'f$3/announcement$1/$4' ), 'in' => array( 'regex' => '#/f(d+)?/announcement(d+)#i', 'matches' => array( array( 'showannouncement', '$2' ), array( 'f', '$1' ) ) ) ), 'showforum' => array( 'app' => 'forums', 'allowRedirect' => 1, 'isPagesMode' => 1, 'out' => array( '#showforum=(d+)(&|$)#i', 'f$1/$2' ), 'in' => array( 'regex' => '#^/f(d+)#i', 'matches' => array( array( 'showforum', '$1' ) ) ) ), 'showtopic' => array( 'app' => 'forums', 'allowRedirect' => 1, 'isPagesMode' => 1, 'out' => array( '#showtopic=(d+)(#|&|$)#i', 't$1/$2' ), 'in' => array( 'regex' => '#^/t(d+)#i', 'matches' => array( array( 'showtopic', '$1' ) ) ) ), 'acteqst' => array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#act=ST(.*?)&t=(d+)(&|$)#i', 't$2/$3' ), 'in' => array( 'regex' => '#^notavalidrequest$#i', 'matches' => array( array( 'showtopic', '0' ) ) ) ), 'act=idx' => array( 'app' => 'forums', 'allowRedirect' => 0, 'out' => array( '#act=idx(&|$)#i', 'index$1' ), 'in' => array( 'regex' => '#^/index(/|$|?)#i', 'matches' => array( array( 'act', 'idx' ) ) ) ), ); Обновляем кеш ЧПУ из админки и проверяем!!! Все сделал, кэш обновил, ничего не изменилось, в чем дело? Скрин настроек SEO в аттачах Содержимое хтассесс в корне движка: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .(jpeg|jpg|gif|png)$ /public/404.php [NC,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] Edited 7 марта, 20159 yr by WOLF
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.