Najnowsza wersja IPB (począwszy od 3.3.3) daje ogromne możliwości i poprawia błędy poprzednich wydań, dzięki czemu optymalizacja SEO jest znacznie łatwiejsza, a można też pokusić o kilka poprawek, które posłużą nam jako niezły dopalacz SEO(optymalizacja), a przynajmniej solidne przygotowanie do pozycjonowania.
Wymagania:
- IPB 3.3.3 i wyżej
- mod rewrite - htaccess
- 10 minut wolnego czasu
Uwagi:
- jeśli twoje forum ma już inną formę przyjaznych linków(np. domyślne) zadbaj o ich przekierowania w .htaccess dając 301 dla starej formatki linków! W ten sposób przeniesiesz ruch ze starych adresów www i Page Rank.
Part 1: Przyjazne adresy www i optymalizacje jakich dotąd nie było na forum IPB
Tezy:
- maksymalne skrócenie adresu WWW
- przyjazne adresy stron
Gotowe rozwiązanie IPB:
- htt p://nazwa-forum.pl/forum/ID-tytul-forum/
- htt p://nazwa-forum.pl/topic/ID-tytul-tematu/
- htt p://nazwa-forum.pl/user/ID-nazwa-użytkownika/
Prawda, że długie? Ponadto pojawia się hierarchizacja treści: /katalog/podkatalog, a takich rozwiązań nie lubimy!
Proponowane ustawienia:
- htt p://nazwa-forum.pl/tytul-forum-fID/
- htt p://nazwa-forum.pl/tytul-tematu-tID/
- htt p://nazwa-forum.pl/nazwa-użytkownika-mID/
Rozwiązanie:
- Wejdź do lokalizacji: admin/applications/forums/extensions/ i otwórz plik furlTemplates.php
- Podmień domyślną zawartość:
$_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, 'out' => array( '#showforum=(.+?)(&|$)#i', 'forum/$1-#{__title__}/$2' ), 'in' => array( 'regex' => '#^/forum/(\d+?)-#i', 'matches' => array( array( 'showforum', '$1' ) ) ) ), 'showtopicunread'=> array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showtopic=(.+?)(?:&|&)view=getnewpost(&|$)#i', 'topic/$1-#{__title__}/unread/$2' ), 'in' => array( 'regex' => '#^/topic/(\d+?)-([^/]+?)/unread(/|$)#i', 'matches' => array( array( 'showtopic', '$1' ), array( 'view', 'getnewpost' ) ) ) ), 'showtopicnextunread'=> array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showtopic=(.+?)(?:&|&)view=getnextunread(&|$)#i', 'topic/$1-#{__title__}/nextunread/$2' ), 'in' => array( 'regex' => '#^/topic/(\d+?)-([^/]+?)/nextunread(/|$)#i', 'matches' => array( array( 'showtopic', '$1' ), array( 'view', 'getnextunread' ) ) ) ), 'showtopic' => array( 'app' => 'forums', 'allowRedirect' => 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' ) ) ) ), );
Na taką://optymalizacja SEO by Makensis dla Tweaks.pl v.2,0 $_SEOTEMPLATES = array( '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' ) ) ) ), 'showtopicunread'=> array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showtopic=(.+?)(?:&|&)view=getnewpost(&|$)#i', '#{__title__}-t$1/$2' ), 'in' => array( 'regex' => '#^/topic/(\d+?)-([^/]+?)/unread(/|$)#i', 'matches' => array( array( 'showtopic', '$1' ), array( 'view', 'getnewpost' ) ) ) ), 'showtopicnextunread'=> array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showtopic=(.+?)(?:&|&)view=getnextunread(&|$)#i', 'topic/$1-#{__title__}/nextunread/$2' ), 'in' => array( 'regex' => '#^/topic/(\d+?)-([^/]+?)/nextunread(/|$)#i', 'matches' => array( array( 'showtopic', '$1' ), array( 'view', 'getnextunread' ) ) ) ), '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, 'out' => array( '#showforum=(.+?)(&|$)#i', '#{__title__}-f$1/$2' ), 'in' => array( 'regex' => "#-f(\d+?)\/#i", 'matches' => array( array( 'showforum', '$1' ) ) ) ), 'showtopic' => array( 'app' => 'forums', 'allowRedirect' => 1, 'out' => array( '#showtopic=(.+?)(&|$)#i', '#{__title__}-t$1/$2' ), 'in' => array( 'regex' => "#-t(\d+?)\/#i", 'matches' => array( array( 'showtopic', '$1' ) ) ) ), 'act=idx' => array( 'app' => 'forums', 'allowRedirect' => 0, 'out' => array( '#act=idx(&|$)#i', 'index$1' ), 'in' => array( 'regex' => "#/index(/|$|\?)#i", 'matches' => array( array( 'act', 'idx' ) ) ) ), );
- Zapisz zmiany w pliku i prześlij plik na serwer
- Wejdź do lokalizacji: admin/applications/members/extensions/ i otwórz plik furlTemplates.php
- Podmień zawartość:
'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' ) ) ) ),
Na://optymalizacja SEO by Makensis dla Tweaks.pl v.2.0 'showuser' => array( 'app' => 'members', 'allowRedirect' => 1, 'out' => array( '#showuser=(.+?)((?:&|&)f=(.+?))?(&|$)#i', '#{__title__}-m$1/$2$4' ), 'in' => array( 'regex' => "#-m(\d+?)\/#i", 'matches' => array( array( 'showuser', '$1' ) ) ) ),
- Zapisz zmiany w pliku i prześlij plik na serwer
- Zaloguj się do Panelu Administratora i wybierz: Zarządzanie pamięcią podręczną, a następnie: Przebuduj pamięć podręczną FURL
- Jeśli Twoje forum istnieje już jakiś czas w sieci to musisz usunąć stare ustawienia przyjaznych linków z cache forum, w tym celu wejdź w zakładkę: Zaawansowane -> SQL Managment -> Przegląd Bazy
- W okienku Zapytania SQL u dołu ekranu wpisz:
UPDATE topics SET title_seo = '' WHERE 1; UPDATE forums SET name_seo = '' WHERE 1;
- Kliknij: Wykonaj zapytanie. Jeśli wystąpi błąd sprawdź czy nie masz prefixa przed tabelami jak np. ibf_ czy ipb_ i uzupełnij nazwy o brakujący prefix
- Wejdź do lokalizacji: admin/applications/forum/modules_public/forums i otwórz plik topics.php
- Podmień zawartość:
$this->registry->output->silentRedirect($this->settings['base_url']."showtopic=".$topicData['tid']. $stUrlParam ."#entry".$post['pid'], $topicData['title_seo'], 302, 'showtopic' );
na://optymalizacja SEO by Makensis dla Tweaks.pl v.2.0 $this->registry->output->silentRedirect($this->settings['base_url']."showtopic=".$topicData['tid']. $stUrlParam ."&#entry".$post['pid'], $topicData['title_seo'], 302, 'showtopic' );
I w dalszej części kodu:$this->registry->output->silentRedirect( $this->settings['base_url']."showtopic=".$topicData['tid']."{$stUrlParam}{$search_hl}"."#entry".$pid, $topicData['title_seo'], 302, 'showtopic' );
Na://optymalizacja SEO by Makensis dla Tweaks.pl v.2.0 $this->registry->output->silentRedirect( $this->settings['base_url']."showtopic=".$topicData['tid']."{$stUrlParam}{$search_hl}"."&#entry".$pid, $topicData['title_seo'], 301, 'showtopic' );
- Zapisz zmiany w pliku i prześlij plik na serwer
- Jeśli występują jakiekolwiek błędy w przekierowaniach to zaloguj się do Panelu Administracyjnego i w głównym menu: Tools & Settings wybierz: System Settings, a następnie zakładkę: System i otwórz pozycję: Search Engines Optimization i wybierz: 'yes' dla opcji: Use .htaccess mod_rewrite. Jeśli nie masz jeszcze w lokalizacji FTP pliku .htaccess musisz go utworzyć ręcznie, Gotowiec znajduje się na podanej stronie IPB, musisz go tylko skopiować i umieścić na serwerze w katalogu głównym forum
- Teraz w templatce w skin_topic => post, zmień:
<a itemprop="replyToUrl" data-entry-pid='{$post['post']['pid']}' href='{parse url="showtopic={$post['post']['topic_id']}&page={$this->request['page']}{$post['post']['PermalinkUrlBit']}#entry{$post['post']['pid']}" template="showtopic" seotitle="{$topic['title_seo']}" base="public"}' rel='bookmark' title='{$topic['title']}{$this->lang->words['link_to_post']} #{$post['post']['post_count']}'> <a itemprop="replyToUrl" data-entry-pid='{$post['post']['pid']}' href='{parse url="showtopic={$post['post']['topic_id']}{$post['post']['PermalinkUrlBit']}#entry{$post['post']['pid']}" template="showtopic" seotitle="{$topic['title_seo']}" base="public"}' rel='bookmark' title='{$topic['title']}{$this->lang->words['link_to_post']} #{$post['post']['post_count']}'>
Na:
<a itemprop="replyToUrl" data-entry-pid='{$post['post']['pid']}' href='{parse url="showtopic={$post['post']['topic_id']}&page={$this->request['page']}{$post['post']['PermalinkUrlBit']}/#entry{$post['post']['pid']}" template="showtopic" seotitle="{$topic['title_seo']}" base="public"}' rel='bookmark' title='{$topic['title']}{$this->lang->words['link_to_post']} #{$post['post']['post_count']}'> <a itemprop="replyToUrl" data-entry-pid='{$post['post']['pid']}' href='{parse url="showtopic={$post['post']['topic_id']}{$post['post']['PermalinkUrlBit']}/#entry{$post['post']['pid']}" template="showtopic" seotitle="{$topic['title_seo']}" base="public"}' rel='bookmark' title='{$topic['title']}{$this->lang->words['link_to_post']} #{$post['post']['post_count']}'>
I:
I zapisz zmiany
Uwagi odnośnie optymalizacji do artykułu według punktów zmian:
2 - oprócz zmiany w formacie linków zastosowano poważną modyfikację dla strony głównej. Od teraz nowa treść, nowe odpowiedzi w tematach powinny być szybciej i lepiej indeksowane, ponieważ nie ma już przekierowania 302(tzw. tymczasowe przeniesienie strony, bardzo niewskazane w GW) do nich tylko bezpośredni odnośnik. Jakie wady tego rozwiązania? Możliwy mniej równomierny podział Page Rank na podstrony, ale nie ma nic za darmo.
12 - poprawa przekierowań z Widoku użytkownika i na stronie głównej w pozycji data ostatniego posta. Dla Widoku użytkownika zmieniono rodzaj przekierowania z 302 na bardziej sensowne i dające szanse na przeniesienie PageRank z profilu użytkownika przekierowanie 301. Informacje po znaku # są ignorowane przez krawlery wyszukiwarek, więc nic nie stoi na przeszkodzie, aby wykorzystać ten adres i dodać go do sieci połączeń wewnątrz forum. 302 dla pozycji data ostatniego posta jest wskazana, ponieważ zastosowano lepsze rozwiązanie w punkcie 2. oraz tytuł odnośnik - data nie jest wskazana do przekierowania 301.
Ogólne uwagi odnośnie przyjaznych adresów na forum IPB
Jak wiemy użytkownicy nie dbają o to, aby linki do stron dawać w formie bbcode, zazwyczaj ogranicza się to do wklejenia adresu WWW, a parser forum czy portalu zamienia je na przyjazne linki. Im krótszy adres tym większe prawdopodieństwo, że nie zostanie obcięty tytuł linka i tytuł odnośnika będzie łatwiej identyfikowalny dla krawlerów. Np. htt p://nazwa-forum.pl/topic/ID-tytul-tematu/ zamieszczony na jakimś forum da w efekcie coś takiego htt p://nazwa-forum.pl/forums/.....matu/ , gdy się ograniczy długość znaków w tytule możliwe jest go zachowanie w całości bądź mniejsze "okrojenie" przez parser np. do takiego modelu: htt p://nazwa-forum.pl/tytul-tematu-tID/
Part II Szlifowanie forum IPB
Poprawiamy inne bugi i niedoskonałości naszego forum IPB.
Odwiedź takie tematy:
- Dodatki SEO do IPB - lista pluginów, które trzeba zainstalować
- Forum w subdomenie co trzeba wiedzieć - bug w IPB dający nofollow dla linków w głównej domenie.
Zmiana tytułu tagów - do dopracowania na razie możemy zmienić lichy tekst /tags/forums na /dowolny-tytul/forums. W najbliższym czasie będzie pełna poprawka
- Wejdź do lokalizacji: admin/applications/core/extensions/ i otwórz plik furlTemplates.php
- Podmień zawartość:
'tags' => array( 'app' => 'core', 'allowRedirect' => 0, 'out' => array( '#app=core(&|&)module=search(&|&)do=search(&|&)search_tags=(\S+?)(&|&)search_app=(\S+?)(&|&|$)#i', 'tags/$6/$4/$7' ), 'in' => array( 'regex' => "#/tags/(\S+?)/(\S+?)/#i", 'matches' => array( array( 'app', 'core' ), array( 'module', 'search' ), array( 'do', 'search' ), array( 'search_tags', '$2' ), array( 'search_app', '$1' ) ) ) ),
Na na przykład://optymalizacja SEO by Makensis dla Tweaks.pl v.1.0 'tags' => array( 'app' => 'core', 'allowRedirect' => 0, 'out' => array( '#app=core(&|&)module=search(&|&)do=search(&|&)search_tags=(\S+?)(&|&)search_app=(\S+?)(&|&|$)#i', 'czytaj/$6/$4/$7' ), 'in' => array( 'regex' => "#/czytaj/(\S+?)/(\S+?)/#i", 'matches' => array( array( 'app', 'core' ), array( 'module', 'search' ), array( 'do', 'search' ), array( 'search_tags', '$2' ), array( 'search_app', '$1' ) ) ) ),
Ze względu na rozwoją sytuację modułu "tagi" (do SEOVB to jak stąd do kosmosu) zmiany w tagach rozdzieliłem na kolejny artykuł:
- poprawa tagów w tym poprawa templatki wyświetlania tagów na podstronie (domyślnie ponad 40 linków wychodzących!), tak aby księgowano tylko podobną zawartość, a nie fora, podfora, inne tagi, nazwy użytkowników etc. itd.