• User Attivo

    Mod Rewrite su PhpBB

    Ciao a tutti
    Ho provato nel mio Forum a inserire un Mod Rewrite sugli url tipo:

    www.sito.ext/forum/viewforum.php
    www.sito.ext/forum/viewtopic.php

    traducendoli in indirizzi html. Un operzione secondo me SE Friendly!

    Qui qualche esempio:

    http://www.neesk.com/Forum/le-chitarre-classica-acustica-elettrica-e-chitarra-basso-vf7.html

    Ho deciso di inserire qui i Mod al forum PhpBB.

    Prima di tutto mi raccomando di eseguire il backup del forum e dei seguenti file utilizzati:

    includes/page_header.php
    includes/page_tail.php

    Bisogna infatti agire su questi due file e sul File HTAccess.

    Procedimento:

    Modifica del file page_header.php, che si trova nella cartella includes:

    #-----[ APRITE IL FILE: ]------------------------------------------ 
    # 
    
    includes/page_header.php 
    
    # 
    #-----[ CERCATE ]------------------------------------------ 
    # 
    
    $template->set_filenames(array( 
        'overall_header' => ( empty($gen_simple_header) ) ? 'overall_header.tpl' : 'simple_header.tpl') 
    ); 
    
    # 
    #-----[ SUBITO DOPO, AGGIUNGETE LE SEGUENTI 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&#40;'/&#91;^a-z0-9\-<>&#93;/', 
                '/&#91;\-&#93;+/', 
                '/<&#91;^>&#93;*>/'&#41;; 
    
        $repl = array&#40;'', 
                '-', 
                ''&#41;; 
    
        $url =  preg_replace &#40;$find, $repl, $url&#41;; 
    
        return $url; 
    
    &#125; 
    
    
    function rewrite_urls&#40;$content&#41; 
    &#123; 
    
        function if_query&#40;$amp&#41; 
        &#123; 
    
            if&#40;$amp != ''&#41; 
            &#123; 
                return '?'; 
            &#125; 
    
        &#125; 
    
        $url_in = array&#40;'/&#40;?<!\/&#41;viewforum.php\?f=&#40;&#91;0-9&#93;+&#41;&#40;&#40;&amp;&#41;|&#40;&&#41;&#41;&#123;0,1&#125;&#40;&#91;^>&#93;+>&#41;&#40;.*?&#41;<\/a>/e', 
                '/&#40;?<!\/&#41;viewtopic.php\?p=&#40;&#91;0-9&#93;+&#41;&#40;&#40;&amp;&#41;|&#40;&&#41;&#41;&#123;0,1&#125;&#40;&#91;^>&#93;+>&#41;&#40;.*?&#41;<\/a>/e', 
                '/&#40;?<!\/&#41;viewtopic.php\?t=&#40;&#91;0-9&#93;+&#41;&#40;&#40;&amp;&#41;|&#40;&&#41;&#41;&#123;0,1&#125;&#40;&#91;^>&#93;+>&#41;&#40;.*?&#41;<\/a>/e'&#41;; 
    
        $url_out = array&#40;"make_url_friendly&#40;'\\6'&#41; . '-vf\\1.html' . if_query&#40;'\\2'&#41; . stripslashes&#40;'\\5\\6'&#41; . '</a>'", 
                "make_url_friendly&#40;'\\6'&#41; . '-vp\\1.html' . if_query&#40;'\\2'&#41; . stripslashes&#40;'\\5\\6'&#41; . '</a>'", 
                "make_url_friendly&#40;'\\6'&#41; . '-vt\\1.html' . if_query&#40;'\\2'&#41; . stripslashes&#40;'\\5\\6'&#41; . '</a>'"&#41;; 
    
        $content = preg_replace&#40;$url_in, $url_out, $content&#41;; 
    
        return $content; 
    
    &#125;    
    

    Modifica del file page_tail.php, che si trova nella cartella includes:

    #-----&#91; APRITE IL FILE&#58; &#93;------------------------------------------ 
    # 
    
    includes/page_tail.php 
    
    # 
    #-----&#91; CERCATE&#58;&#93;------------------------------------------ 
    # 
    
    if &#40; $do_gzip_compress &#41; 
    &#123; 
        // 
        // Borrowed from php.net! 
        // 
        $gzip_contents = ob_get_contents&#40;&#41;; 
        ob_end_clean&#40;&#41;; 
    
        $gzip_size = strlen&#40;$gzip_contents&#41;; 
        $gzip_crc = crc32&#40;$gzip_contents&#41;; 
    
        $gzip_contents = gzcompress&#40;$gzip_contents, 9&#41;; 
        $gzip_contents = substr&#40;$gzip_contents, 0, strlen&#40;$gzip_contents&#41; - 4&#41;; 
    
        echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; 
        echo $gzip_contents; 
        echo pack&#40;'V', $gzip_crc&#41;; 
        echo pack&#40;'V', $gzip_size&#41;; 
    &#125; 
    
    # 
    #-----&#91; SOSTITUITE IL SUDDETTO CODICE CON QUESTO&#58; &#93;------------------------------------------ 
    # 
    
    if &#40; $do_gzip_compress &#41; 
    &#123; 
        // 
        // Borrowed from php.net! 
        // 
        $gzip_contents = ob_get_contents&#40;&#41;; 
        ob_end_clean&#40;&#41;; 
        echo rewrite_urls&#40;$contents&#41;; 
        global $dbg_starttime; 
          
        $gzip_size = strlen&#40;$gzip_contents&#41;; 
        $gzip_crc = crc32&#40;$gzip_contents&#41;; 
    
        $gzip_contents = gzcompress&#40;$gzip_contents, 9&#41;; 
        $gzip_contents = substr&#40;$gzip_contents, 0, strlen&#40;$gzip_contents&#41; - 4&#41;; 
    
        echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; 
        echo $gzip_contents; 
        echo pack&#40;'V', $gzip_crc&#41;; 
        echo pack&#40;'V', $gzip_size&#41;; 
    &#125; 
    else 
    &#123; 
        $contents = ob_get_contents&#40;&#41;; 
        ob_end_clean&#40;&#41;; 
        echo rewrite_urls&#40;$contents&#41;; 
        global $dbg_starttime; 
    &#125; 
    

    Inserite il file HTAccess nella root del forum, con queste righe:

    RewriteEngine On 
    #RewriteBase / 
    
    RewriteRule &#91;.&#93;*-vf&#40;&#91;0-9&#93;*&#41; viewforum.php?%&#123;QUERY_STRING&#125;&f=$1 
    RewriteRule &#91;.&#93;*-vp&#40;&#91;0-9&#93;*&#41; viewtopic.php?%&#123;QUERY_STRING&#125;&p=$1 
    RewriteRule &#91;.&#93;*-vt&#40;&#91;0-9&#93;*&#41; viewtopic.php?%&#123;QUERY_STRING&#125;&t=$1 
    

    Mi raccomando nuovamente di eseguire i backup!!!

    Giorgio, se vuoi la inseriamo su WikiGT? 😉
    :ciauz:


  • User Attivo

    veramente interessante, complimenti
    a me serviva per il forum

    ho provato, però mi da errore 404
    ci deve qualcosa che non funziona con htaccess.
    Sicuro che va formulato in questo modo? A te funziona?

    grazie


  • User Attivo

    A me funziona perfettamente c'è un però.

    Se entro in un forum e clicco il numero di pagina accanto all descrizione del topic (esempio la numero 28) mi apre sempre la pagina nr. 1

    Link : http://calcio.leonardo.it/forum/28-vt29424.html?amp;start=405

    Una volta entrato nel topic però in alto mi appaioi i numeri di pagina e quindi cliccando su quelli si va correttamente alla pagina 28 con il link :

    http://calcio.leonardo.it/forum/28-vt29424.html?amp;postdays=0&postorder=asc&start=405

    Altra cosa, nella prima parte di codice, nel WKGT manca una parentesi graffa chiusa che da un errore nel codice (page_header).

    Sapete dirmi se a qualcun'altro si è riproposto il problema della pagina ?

    Grazie.


  • User Attivo

    Trovato l'errore.

    Il tuo codice che qui è corretto nella pagina del WKGT diventa :

    $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');

    http://www.giorgiotave.it/wikigt/os/MOD_Rewrite_per_PhpBB

    Ci manca qualcosina 🙂

    Grazie.


  • User Attivo

    @lilo said:

    ho provato, però mi da errore 404
    ci deve qualcosa che non funziona con htaccess.
    Sicuro che va formulato in questo modo? A te funziona?

    grazie

    Per alcuni tipi di server è preferibile che togli il comando:

    RewriteEngine On
    😉


  • User Attivo

    @Dragone67 said:

    Trovato l'errore.

    Il tuo codice che qui è corretto nella pagina del WKGT diventa :

    http://www.giorgiotave.it/wikigt/os/MOD_Rewrite_per_PhpBB

    Ci manca qualcosina 🙂

    Grazie.

    Grazie. Bug corretto;)


  • Bannato User Attivo

    Ho molte pagine posizionate con il parametro ..?t=12345 e non vorrei "perderle".
    Come potrei fare?


  • User Attivo

    @fabioski said:

    Ho molte pagine posizionate con il parametro ..?t=12345 e non vorrei "perderle".
    Come potrei fare?

    Se fai il Rewrite non le perdi, saranno sempre raggiungibili 😉


  • Bannato User Attivo

    Si ma ho letto d isfuggita nel forum che per "tenerle Posizionate" bisognerebbe fare un redirect 301 o qualcosa di simile...

    Il mod rewrite applicato brutamente su un sito di 3 anni, dicono possa portare alla perdita di molte pagine indicizzate... giusto?


  • User Attivo

    @fabioski said:

    Si ma ho letto d isfuggita nel forum che per "tenerle Posizionate" bisognerebbe fare un redirect 301 o qualcosa di simile...

    Il mod rewrite applicato brutamente su un sito di 3 anni, dicono possa portare alla perdita di molte pagine indicizzate... giusto?

    Si, inizialmente, ma poi se Google ti rispetta come Giorgio(anche lui ha avuto lo stesso problema quando ha installato VB da PhpBB), non dovresti avere grossi cali 😉


  • User Attivo

    Questa mod funziona solo con Apache vero?


  • User Attivo

    @Gianbi said:

    Questa mod funziona solo con Apache vero?

    Penso con più tipi di server.
    In ogni caso le modifiche si dovranno apportare soltanto in

    [LEFT]```
    [LEFT]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 [/LEFT]

     
    ;) [/LEFT]

  • User

    mi trovo in ambiente windows e non riesco a modificare i permessi di htaccess in scrittura per inserire il blocco di codice.
    Qualcuno può aiutarmi?:)


  • Super User

    Se sei su Windows non puoi usare il mod_rewrite 🙂


  • User

    sfortuna:x grazie per le info stavo impazzendo:)