Czyste forum phpbb3 nie posiada niestety opcji włączenia przyjaznych adresów. Można co prawda posłużyć się rozwiązaniem phpBB by Przemo, jednak nie do wszystkich ta modyfikacja przemawia. Ponadto w chwili obecnej wersja phpBB by Przemo jest oparta o skrypt phpBB w wersji 2. Jest na szczęście rozwiązanie dla tych, którzy chcą mieć na swoim forum przyjazne URL’e i korzystać ze skryptu phpbb3, który wydaje się być ciekawszym rozwiązaniem od swojego starszego brata.

Wystarczy zainstalować modyfikację phpBB SEO mod Rewrite. Została ona stworzona w 3 wersjach: Simple, Mixed oraz Advanced. Nie będę tutaj opisywać różnic pomiędzy tymi wersjami. Szczerze powiedziawszy nawet się w owe różnice nie zagłębiałem i zainstalowałem ostatnią wspomnianą wersję. Modyfikacja nie jest trudna do wprowadzenia, jednak można się pomylić dokonując zmian w poszczególnych plikach. Każdy średniozaawansowany użytkownik komputera powinien sobie dać radę z instalacją phpBB SEO mod Rewrite. Problem jednak pojawia się już po wdrożeniu modyfikacji. Pomimo sukcesu i pierwszego odczucia zadowolenia po chwili można dostrzec, że modyfikacja ma problem z polskimi znakami. Otóż polskie znaki są pomijane. Chyba jedynie znak “ó” jest zamieniany na “o”. Adresy działów forum można sobie zmodyfikować i ręcznie ustawić, że URL do działu “Przedstaw się” będzie miał postać:
/przedstaw-sie-f5.html

zamiast
/przedstaw-si-f5.html

gdzie f5 jest identyfikatorem działu. Jeśli w pasku przeglądarki internetowej wpiszemy:
/nie-przedstawie-sie-f5.html

to również odpali się odpowiednia strona. Dla działania forum istotny jest bowiem sam identyfikator. Tak jak już wspomniałem, ilość działów na forum jest ustalona i rzadko ulega zmianie, więc w można tutaj dokonać ręcznej ingerencji w formę wyświetlanych adresów, w przypadku, gdy któryś z działów zawiera polskie znaki. Dużo gorzej sprawa wygląda z adresami do zakładanych tematów. Po zainstalowaniu opisywanej modyfikacji i stworzeniu tematu “Pokaż swoje zdjęcie” adres do tego wątku będzie miał niestety postać:
/poka-swoje-zdjcie-t69.html

gdzie t69 jest identyfikatorem tematu. Niestety polskie znaki są po prostu usuwane, co w wielu przypadkach powoduje, iż URL’e wcale nie są przyjazne dla użytkownika. Wystarczy sobie wyobrazić jak będzie wyglądać adres do tematu “Kupiłem nową domenę” lub podobnych. Na całe szczęście po lekkiej zmianie phpBB SEO mod Rewrite nasze forum będzie automatycznie zamieniać polskie znaki na zwykłe. Wówczas wątek o nazwie “Kupiłem nową domenę” będzie miał postać:
/kupilem-nowa-domene-t85.html

Otrzymamy więc to, o co nam chodziło wprowadzając ową modyfikację do forum phpBB3. Poniższa instrukcja dotyczy najnowszej dostępnej wersji phpBB SEO mod Rewrite ver. 0.4.0.
Sama zmiana dotyczy jedynie jednego pliku, a nawet jednej funkcji. Otwieramy do edycji plik “phpbb_seo_class.php” znajdujący się w katalogu “phpbb_seo”. Odnajdujemy w nim funkcję “format_url”, która ma postać:
function format_url( $url, $type = 'topic' ) {
$url = preg_replace('`\[.*\]`U','',$url);
$url = htmlentities($url, ENT_COMPAT, $this->encoding);
$url = preg_replace( '`&([a-z]+)(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', "\\1", $url );
$url = preg_replace( $this->seo_opt['url_pattern'] , '-', $url);
$url = strtolower(trim($url, '-'));
return empty($url) ? $type : $url;
}

i zamieniamy na:
function format_url( $url, $type = 'topic' ) {
$url = preg_replace('`\[.*\]`U','',$url);
$url = htmlentities($url, ENT_COMPAT, $this->encoding);
$url = str_replace( array(utf8_chr(260), utf8_chr(261)),'a', $url );
$url = str_replace( array(utf8_chr(262), utf8_chr(263)),'c', $url );
$url = str_replace( array(utf8_chr(280), utf8_chr(281)),'e', $url );
$url = str_replace( array(utf8_chr(321), utf8_chr(322)),'l', $url );
$url = str_replace( array(utf8_chr(323), utf8_chr(324)),'n', $url );
$url = str_replace( array(utf8_chr(346), utf8_chr(347)),'s', $url );
$url = str_replace( array(utf8_chr(377), utf8_chr(378)),'z', $url );
$url = str_replace( array(utf8_chr(379), utf8_chr(380)),'z', $url );
$url = preg_replace( '`&([a-z]+)(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', "\\1", $url );
$url = preg_replace( $this->seo_opt['url_pattern'] , '-', $url);
$url = strtolower(trim($url, '-'));
return empty($url) ? $type : $url;
}

Jak widać, cała modyfikacja pliku polega na użyciu funkcji “str_replace” do podmiany polskich znaków na zwykłe znaki. Wystarczy zapisać zmieniony plik “phpbb_seo_class.php” i cieszyć się poprawnie wyświetlanymi URL’ami na swoim forum.