Connect.gt

Condividiamo idee e conoscenza dal 2003...
...dopo 17 anni una Nuova Storia è nata
Scopri di più

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.


Procedimento:

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


  • Questa pagina è stata modificata per l'ultima volta il 1 set 2006 alle 19:38.
  • Questa pagina è stata letta 9 054 volte.