#1 09-06-2010 11:26:33

Clones-Chinois
Le plus chinois de tous les clones :P
Lieu : Sur Clones-Chinois
Inscription : 21-07-2009
Messages : 1 090

[MOD] Installation PunRewriteURL PunOOgle en une minute.

Bonjour a tous,

Comme vous le savez il existe différent mod d'url rewitting pour Punbb ou Fluxbb et certain sont très rapide a installer (Simplypunrw) et d'autre pas (Punoogle).

Le problème est que si vous voulez un sitemaps rewitter avec Simplypunrw , je n'ai pas encore trouvé de hack pour le faire.

Donc j'ai remodifier a le mod Simplypunrw de Tcheval pour pouvoir avoir la même syntaxe que Punoogle pour pouvoir utiliser les mod de sitemaps de Punoogle !

footer.php
 
#
#---------[ 2. TROUVER ]-----------------------------------------------------
#
 

// Close the db connection (and free up any result data)
$db->close();
 
#
#---------[ 3. AJOUTER AVANT ]-----------------------------------------
#
 
// PunRewriteURL By Clones-Chinois (Inspirated of SimplyPunRW par Thorze)
// On commence par récupérer les pid de tous les liens qui appellent un message précis
$pattern = 'viewtopic.php?pid=<PID>'; // URL Rewriting ?
preg_match_all('#'.str_replace('\<PID\>', '([0-9]+)', preg_quote($pattern, '#')).'#', $tpl_main, $pids);
$pids = array_unique($pids[1]);

 
if(!empty($pids)) {
 
    // On récupére ensuite les id des topics qui correspondent aux différents pid
    $result = $db->query('SELECT id, topic_id FROM '.$db->prefix.'posts WHERE id='.implode(' OR id=', $pids)) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
    if (!$db->num_rows($result))

        message($lang_common['Bad request']);
 
    while ($pid_id = $db->fetch_assoc($result))
    {
        $adresse[$pid_id['id']] = Array('topic_id' => $pid_id['topic_id']);

 
        if (isset($query))
            $query .= ' OR topic_id='.$pid_id['topic_id'];
        else
            $query = $pid_id['topic_id'];
    }

 
    // On récupére et on classe ensuite les pid de tous les posts de tous les topics concernés
    $result = $db->query('SELECT topic_id, id FROM '.$db->prefix.'posts WHERE topic_id='.$query.' ORDER BY posted') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
    while ($id_pid = $db->fetch_assoc($result))

        $posts[$id_pid['topic_id']][] = $id_pid['id'];
 
    // On recherche les pid des liens dans les pid des topics et on récupére la place qu'ils occupent pour calculer leur page
    foreach ($posts AS $id => $pids)

    {
        foreach(array_keys($adresse) AS $pid) {
            if(($position = array_search($pid, $pids)) !== false)

                $adresse[$pid]['p'] = ceil(($position + 1) / $pun_user['disp_posts']);
        }
    }
 

    // On remplace enfin les adresses avec les pid par des adresses uniques et directes avec l'id du topic en précisant la page
    foreach($adresse AS $pid => $url)
        $tpl_main = str_replace(str_replace('<PID>', $pid, $pattern), 'viewtopic.php?id='.$url['topic_id'].'&p='.$url['p'].'', $tpl_main);

}
 
// On en profite pour virer tous les  ou  qui doublonnent aussi inutilement les pages
# !! sauf pour les pages a dizaine (x) !!
$tpl_main = preg_replace('#(\?|&)p\=1(\D)#', '\\2', $tpl_main);

 
// Fonction de rewrite
function pun_url($str,$more=false) {
        if((!isset($more)) || ($more == false)){

            $max = 2;
         }else{
            $max = $more;
         }
         $str = strtr($str,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç'`",
                           "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc  ");
         $str = strtolower($str);
         $str = preg_replace('/[^a-z0-9_\.\s]/',' ',$str);
         $str = preg_replace('/[^a-z0-9_\s]\./','',trim($str));
         $str = str_replace('.',' ',$str);
         $str = str_replace('_',' ',$str);
         $str = " ".$str." ";
 
         $str = @ereg_replace(' .{1,'.$max.'} ', ' ', $str);
         $rep = array(" quel ", " crois ", " etes ", " quand ", " suis ", " aux "," moi ", " sont ", " quelle ", " quoi ", " mon ", " est ", " plus ", " que ", " vous ", " faites ", " par "," dans "," pour "," pas "," les "," des "," que "," une "," avec "," qui "," sur "," mes ");
         $str = str_replace($rep," ",$str);
         $str = trim($str);
         $str = preg_replace('/[\s]+/','-',$str);
 
         if(count(explode("-", $str)) >= 8){

            $max++;
            $str = pun_url(str_replace('-',' ',$str),$max);
         }
         if(!$more){
         if((!isset($str)) || ($str == "")){

            $str = "clones-chinois-com-le-meilleur-forum-du-net";
           }
         }
           return $str;
  }
 
 
// Rewrite de la navbar
$tpl_main = preg_replace('#<a href="index.php#', '<a href="index', $tpl_main);
$tpl_main = preg_replace('#<a href="userlist.php#', '<a href="utilisateurs', $tpl_main);
$tpl_main = preg_replace('#<a href="search.php#', '<a href="recherche', $tpl_main);
$tpl_main = preg_replace('#<a href="register.php#', '<a href="inscription', $tpl_main);
$tpl_main = preg_replace('#<a href="login.php#', '<a href="connexion', $tpl_main);
$tpl_main = preg_replace('#<a href="contact.php#', '<a href="contact', $tpl_main);
$tpl_main = preg_replace('#<a href="connexion\?action=forget#', '<a href="oublie-mot-de-passe', $tpl_main);

 
// Rewrite de viewforum et on ajoute le nom du forum dans l'url
$pattern = 'viewforum.php?id=<ID>';
preg_match_all('#'.str_replace('\<ID\>', '([0-9]+)', preg_quote($pattern, '#')).'#', $tpl_main, $out);
$out2 = array_unique($out[1]);

if(!empty($out2)) 
{
    $tabunique2=array_values($out2);
    $i=0;
    while ($i<count($tabunique2)) 
    {

        $id7 = $tabunique2[$i];
        $result = $db->query('SELECT id, forum_name FROM '.$db->prefix.'forums WHERE id='.$id7) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
        while ($fnom = $db->fetch_assoc($result))

        {
$tpl_main = preg_replace('#<a href="viewforum.php\?id='.$fnom['id'].'(\D)#', '<a href="forum-'.$id7.'-'.pun_url($fnom['forum_name']).'.html\\1', $tpl_main);
            $tpl_main = preg_replace('#<a href="forum-([0-9]+)-'.pun_url($fnom['forum_name']).'.html([0-9]+)#', '<a href="forum-\\1\\2.html', $tpl_main);
            $tpl_main = preg_replace('#<a href="forum-'.$id7.'-'.pun_url($fnom['forum_name']).'.html&p=([0-9]+)#', '<a href="forum-'.$fnom['id'].'-page\\1-'.pun_url($fnom['forum_name']).'.html', $tpl_main);

        }

        $i++;
    }
}
 
// Rewrite de viewtopic et on ajoute le titre du post dans l'url
$pattern = 'viewtopic.php?id=<ID>';
preg_match_all('#'.str_replace('\<ID\>', '([0-9]+)', preg_quote($pattern, '#')).'#', $tpl_main, $out);
$out3 = array_unique($out[1]);

if(!empty($out3)) 
{
    $tabunique3=array_values($out3);
    $i=0;
    while ($i<count($tabunique3)) 
    {
        $id7 = $tabunique3[$i];
        $result = $db->query('SELECT id, subject FROM '.$db->prefix.'topics WHERE id='.$id7.'') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
        while ($fnom = $db->fetch_assoc($result))
{
            $tpl_main = preg_replace('#<a href="viewtopic.php\?id='.$fnom['id'].'#', '<a href="sujet-'.$fnom['id'].'-'.pun_url($fnom['subject']).'.html', $tpl_main);
            $tpl_main = preg_replace('#<a href="sujet-([0-9]+)-'.pun_url($fnom['subject']).'.html([0-9]+)#', '<a href="sujet-\\1\\2.html', $tpl_main);
            $tpl_main = preg_replace('#<a href="sujet-'.$fnom['id'].'-'.pun_url($fnom['subject']).'.html&p=([0-9]+)#', '<a href="sujet-'.$fnom['id'].'-page\\1-'.pun_url($fnom['subject']).'.html', $tpl_main);
            $tpl_main = preg_replace('#<a href="sujet-'.$fnom['id'].'-'.pun_url($fnom['subject']).'.html&action=new#', '<a href="sujet-'.$fnom['id'].'-nouveaux-messages.html', $tpl_main);
        }
        $i++;
    }
}
 

 
// Rewrite du profile et on ajoute du speudo
$pattern = 'profile.php?id=<ID>';
preg_match_all('#'.str_replace('\<ID\>', '([0-9]+)', preg_quote($pattern, '#')).'#', $tpl_main, $out);
$out4 = array_unique($out[1]);
if(!empty($out4)) 
{
    $tabunique4=array_values($out4);
    $i=0;
    while ($i<count($tabunique4)) 
    {

        $id9 = $tabunique4[$i];
        $result = $db->query('SELECT id,username FROM '.$db->prefix.'users WHERE id='.$id9) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
        while ($fnom = $db->fetch_assoc($result))
        {
            $tpl_main = preg_replace('#<a href="profile.php\?id='.$fnom['id'].'#', '<a href="profil-'.$fnom['id'].'-'.pun_url($fnom['username']).'.html', $tpl_main);
$tpl_main = preg_replace('#<a href="profil-([0-9]+)-'.pun_url($fnom['username']).'.html([0-9]+)#', '<a href="profil-\\1\\2.html', $tpl_main);
        }
        $i++;
    }
}

// Rewrite des liens de recherche
$tpl_main = preg_replace('#<a href="recherche\?action=show_24h#', '<a href="recherche-24-heures', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche\?action=show_unanswered#', '<a href="recherche-sans-reponse', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche\?action=show_subscriptions#', '<a href="mes-marque-pages', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche\?action=show_new#', '<a href="nouveaux-messages', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche\?action=show_user&user_id=([0-9]+)#', '<a href="voir-messages-de-\\1', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche\?search_id=([0-9]+)#', '<a href="recherche\\1', $tpl_main);
$tpl_main = preg_replace('#<a href="recherche([0-9]+)&p=([0-9]+)#', '<a href="recherche\\1-page\\2', $tpl_main);

//Divers misc.php
$tpl_main = preg_replace('#<a href="misc.php\?action=rules#', '<a href="regles', $tpl_main);
$tpl_main = preg_replace('#<a href="misc.php\?action=markread#', '<a href="marquer-discussions-comme-lues', $tpl_main);

// tout sur une ligne (SEO)
$tpl_main = preg_replace('#\t#', '', $tpl_main);
//$tpl_main = preg_replace('#\n#', '', $tpl_main);
$tpl_main = preg_replace('#\r#', '', $tpl_main);
$tpl_main = preg_replace('#\0#', '', $tpl_main);
$tpl_main = preg_replace('#\x#', '', $tpl_main);


#
#---------[ 4. ENREGISTRER/ENVOYER SUR LE SERVEUR ]----------------------------
#

Et un fichier .htaccess :

RewriteEngine on
RewriteRule ^([0-9]+)-mes-messages$ search.php?action=show_user&user_id=$1 [L]
RewriteRule ^connexion$ login.php [L]
RewriteRule ^contact$ contact.php [L]
RewriteRule ^index$ index.php [L]
RewriteRule ^inscription$ register.php [L]
RewriteRule ^marquer-discussions-comme-lues$ misc.php?action=markread [L]
RewriteRule ^mes-marque-pages$ search.php?action=show_subscriptions [L]
RewriteRule ^message-([0-9]+)(.*)$ viewtopic.php?pid=$1 [L]
RewriteRule ^nouveaux-messages$ search.php?action=show_new [L]
RewriteRule ^oublie-mot-de-passe$ login.php?action=forget [L]
RewriteRule ^profil-([0-9]+)(.*)$ profile.php?id=$1 [L]
RewriteRule ^recherche$ search.php [L]
RewriteRule ^recherche([0-9]+)$ search.php?search_id=$1 [L]
RewriteRule ^recherche-([0-9]+)$ search.php?search_id=$1 [L]
RewriteRule ^recherche-([0-9]+)-([0-9]+)$ search.php?search_id=$1&p=$2 [L]
RewriteRule ^recherche-([0-9]+)-([0-9]+).html$ search.php?search_id=$1&p=$2 [L]
RewriteRule ^recherche([0-9]+).html$ search.php?search_id=$1 [L]
RewriteRule ^recherche-([0-9]+).html$ search.php?search_id=$1 [L]
RewriteRule ^recherche([0-9]+)-page([0-9]+)$ search.php?search_id=$1&p=$2 [L]
RewriteRule ^recherche([0-9]+)-page([0-9]+).html$ search.php?search_id=$1&p=$2 [L]
RewriteRule ^recherche-24-heures$ search.php?action=show_24h [L]
RewriteRule ^recherche-sans-reponse$ search.php?action=show_unanswered [L]
RewriteRule ^regles$ misc.php?action=rules [L]
RewriteRule ^utilisateurs$ userlist.php [L]
RewriteRule ^voir-messages-de-([0-9]+)$ search.php?action=show_user&user_id=$1 [L]

#Vieux a virer dans 2-3 mois
#RewriteRule ^s([0-9]+)-page([0-9]+)-(.*)$ viewtopic.php?id=$1&p=$2 [L]
#RewriteRule ^s([0-9]+)-page([0-9]+)-(.*).html$ viewtopic.php?id=$1&p=$2 [L]
#RewriteRule ^s([0-9]+)(.*)$ viewtopic.php?id=$1 [L]
#RewriteRule ^s([0-9]+)-nouveaux-messages.html$ viewtopic.php?id=$1&action=new [L]

#Nouveau
RewriteRule ^sujet-([0-9]+)-page([0-9]+)-(.*)$ viewtopic.php?id=$1&p=$2 [L]
RewriteRule ^sujet-([0-9]+)-page([0-9]+)-(.*).html$ viewtopic.php?id=$1&p=$2 [L]
RewriteRule ^sujet-([0-9]+)(.*)$ viewtopic.php?id=$1 [L]
RewriteRule ^sujet-([0-9]+)-nouveaux-messages.html$ viewtopic.php?id=$1&action=new [L]

RewriteRule ^forum-([0-9]+)-page([0-9]+)-(.*).html$ viewforum.php?id=$1&p=$2 [L]
RewriteRule ^forum-([0-9]+)(.*)$ viewforum.php?id=$1 [L]

Url : http://www.avis-planethoster.com/forums … inute.html


userbar.gif

Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie

[Proverbe chinois]

Mais bien la poser, reste primordial!

Hors ligne

#2 21-07-2011 20:51:19

samsha
Membre
Inscription : 21-07-2011
Messages : 2

Re : [MOD] Installation PunRewriteURL PunOOgle en une minute.

Bonsoir j ai un probleme avec air phone 4g je n arrive pas a acceder au weeb pourriez vous m aider merci

Hors ligne

Pied de page des forums