Vediamo come inserire un Mod-Rewrite su PhpBB per far rileggere gli url dalla forma
/forum/viewforum.php?f=####
/forum/viewtopic.php?t=####
alla forma
/forum/titolo-del-forum-vf####.html
/forum/titolo-del-topic-vt####.html
Cosi facendo si rende maggiormente Search Engine Friendly il proprio Forum.
Prima di tutto mi raccomando di eseguire il backup del forum e dei seguenti file utilizzati:
includes/page_header.php
includes/page_tail.php
che si trovano nella cartella includes
Bisognerà infatti agire su questi due file e sul File HTAccess.
APRITE
includes/page_header.php
CERCATE
$template->set_filenames(array( 'overall_header' => ( empty($gen_simple_header) ) ? 'overall_header.tpl' : 'simple_header.tpl') );
APPENA DOPO, AGGIUNGETE QUESTE RIGHE
ob_start(); function make_url_friendly($url) { $url = strtolower($url); $find = array(' ', '&', '\r\n', '\n', '/', '\\', '+'); $url = str_replace ($find, '-', $url); $find = array(' ', 'é', 'è', 'ë', 'ê'); $url = str_replace ($find, 'e', $url); $find = array(' ', 'ó', 'ò', 'ô', 'ö'); $url = str_replace ($find, 'o', $url); $find = array(' ', 'á', 'à', 'â', 'ä'); $url = str_replace ($find, 'a', $url); $find = array(' ', 'í', 'ì', 'î', 'ï'); $url = str_replace ($find, 'i', $url); $find = array(' ', 'ú', 'ù', 'û', 'ü'); $url = str_replace ($find, 'u', $url); $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', ''); $url = preg_replace ($find, $repl, $url); return $url; } function rewrite_urls($content) { function if_query($amp) { if($amp != '') { return '?'; } } $url_in = array('/(?<!\/)viewforum.php\?f=([0-9]+)((&)|(&)){0,1}([^>]+>)(.*?)<\/a>/e', '/(?<!\/)viewtopic.php\?p=([0-9]+)((&)|(&)){0,1}([^>]+>)(.*?)<\/a>/e', '/(?<!\/)viewtopic.php\?t=([0-9]+)((&)|(&)){0,1}([^>]+>)(.*?)<\/a>/e'); $url_out = array("make_url_friendly('\\6') . '-vf\\1.html' . if_query('\\2') . stripslashes('\\5\\6') . '</a>'", "make_url_friendly('\\6') . '-vp\\1.html' . if_query('\\2') . stripslashes('\\5\\6') . '</a>'", "make_url_friendly('\\6') . '-vt\\1.html' . if_query('\\2') . stripslashes('\\5\\6') . '</a>'"); $content = preg_replace($url_in, $url_out, $content); return $content; }
APRITE
includes/page_tail.php
CERCATE
if ( $do_gzip_compress ) { // // Borrowed from php.net! // $gzip_contents = ob_get_contents(); ob_end_clean(); $gzip_size = strlen($gzip_contents); $gzip_crc = crc32($gzip_contents); $gzip_contents = gzcompress($gzip_contents, 9); $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; echo $gzip_contents; echo pack('V', $gzip_crc); echo pack('V', $gzip_size); }
SOSTITUITELO CON QUESTO CODICE:
if ( $do_gzip_compress ) { // // Borrowed from php.net! // $gzip_contents = ob_get_contents(); ob_end_clean(); echo rewrite_urls($contents); global $dbg_starttime; $gzip_size = strlen($gzip_contents); $gzip_crc = crc32($gzip_contents); $gzip_contents = gzcompress($gzip_contents, 9); $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; echo $gzip_contents; echo pack('V', $gzip_crc); echo pack('V', $gzip_size); } else { $contents = ob_get_contents(); ob_end_clean(); echo rewrite_urls($contents); global $dbg_starttime; }
APRITE
.htaccess
INSERITE QUESTE RIGHE
Options +FollowSymlinks RewriteEngine On #RewriteBase / RewriteRule [.]*-vf([0-9]*) viewforum.php?%{QUERY_STRING}&f=$1 RewriteRule [.]*-vp([0-9]*) viewtopic.php?%{QUERY_STRING}&p=$1 RewriteRule [.]*-vt([0-9]*) viewtopic.php?%{QUERY_STRING}&t=$1
In alcuni tipi di server dovete eliminare il richiamo:
Options +FollowSymlinks
Mi raccomando nuovamente di eseguire i backup!!!
Ovviamente questa Mod è più efficace se si ottimizza PhPbb con questi altri Mods di Ottimizzazione.
Per vedere il risultato di tale modifica: Neesk Forum