Перейти к содержанию

Чпу для ipb 3.4.6


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

Еще раз всем здравствуйте, снова возникла проблема.
На старом форуме стояли ссылки 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]

post-27611-0-79327200-1425732647_thumb.j

Изменено пользователем WOLF
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...