Home
Accueil
Downloads
Téléchargements
Forums
Forums
Your Account
Votre compte
Menu
· Accueil ·

· Communication ·
  · Forums
  · Messages privés
  · Contactez nous
  · Recommendez nous
  · Sondages
  · Les projets

· Nouvelles ·Stats
  · Sujets
  · Ecrire un article
  · Articles archivés
  · Articles RSS
  · Lettre de sécurité
  · Archive de lettres

· Téléchargements ·
  · Accueil
  · Nouveautés
  · Mises à jour
  · Thêmes

· Outils ·
  · Outils divers
  · Convertisseur de temps
  · Table de caractères
  · Générateur de boutons
  · Compresseur Javascript

· Documentation ·
  · Wiki
  · Questions/Réponses
  · Documents
  · Manuel PHP-Nuke
  · Manuel PHP
  · Manuel PEAR
  · Encyclopédies

· Liens ·
  · Nos liens
  · Nos fluxs RSS
  · Partenaires
  · Votre publicité
  · Sitemap
  · Mes bannières

· Infos ·
  · Rechercher
  · Votre compte
  · Liste des membres
  · Carte des membres
  · Top

· Divers ·
  · Météo
  · Galeries
  · Statistiques Phpnuke
  · MS Analysis


Pages qui pointent vers celle-ci
Sommaire Wiki -:- Sommaire tutoriaux -:- Re-ecriture d URL
Re-ecriture d URL : Pour commencer

 

 

1 - Sommaire

  

Ce tutorial n'a pas pour vocation de vous expliquer de long en large le principe de la réécriture d'URL appelé URL Rewriting. Des tutoriaux sur cela existent par dizaine sur le net. Ici ne sera abordé qu'uniquement la mise en oeuvre basique. Vous trouverez dans la suite de cette rubrique le nécessaire pour procéder à la ré-écriture des divers modules.

 Si la ré-écriture d'URL n'est pas bien compliqué en soit, il est indispensable d'y aller par petites touches, sans quoi, vous risquez fort de vous arracher les cheveux. Il est aussi vivement conseillé de mettre en place la ré-écriture d'URL module par module. Ceci, afin de mieux comprendre les effets des diverses lignes de code que vous allez rajouter. De même, il est aussi conseillé de procéder ligne par ligne en prenant bien soin de commencer par la ligne la plus longue et/ou contenant le plus d'occurence à ré-écrire. Sans cela, vous allez au devant d'erreurs serveur sans fin.

Avant d'aller un peu plus loin, il est impératif de savoir si le serveur où est hébergé votre site supporte la ré-écriture d'URL. Pour ce faire, créez un fichier PHP nommé, par exemple, phpinfo.php en isérant à l'intérieur le code qui suit :

Code:
<?php
phpinfo();
?> 

puis, transférez le sur votre serveur et appelez le en écrivant dans la barre d'adresse de votre navigateur : http://www.votre_site.com/phpinfo.php. Dans la page qui s'ouvre, effectuez une recherche sur : mod_rewrite. Il devrait se trouver dans la partie apache/loaded module de la page. Si la recherche est concluante, votre serveur possède le necessaire pour la ré-écriture d'URL. Dans le cas contraire, inutile d'aller plus loin, cette dernière ne fonctionnera pas.

Pour ce qui concerne PHP-Nuke, la ré-écriture se décompose en trois partie distincte : le htaccess, qui recevra toutes les lignes "brutes"; le  header.php ($urlin = array), qui recevra toutes les lignes "brutes" du htaccess; le header.php ($urlout = array),  qui transformera les lignes "brutes" en ligne HTML. Tout cela est bien sur schématisé au plus simple afin d'en faciliter la compréhension.

Que va bien pouvoir faire votre serveur avec tout cela ? Très simple , lorsqu'une page, quelle qu'elle soit, est appelée, vérification est faite dans le htaccess. Si une ligne correspondante est trouvée, il envoie l'information à PHP-Nuke au travers du fichier header.php. Là encore, si une correspondance est trouvée, la ré-écriture s'opèrera pour la page demandée. Facile non ? En gardant se principe en vue, il sera donc indispensable de respecter un ordre chronologique d'ajout de lignes à ré-écrire. En effet, si le htaccess peut s'accomoder d'une inscription dans le désordre, ce n'est pas le cas du fichier header.php qui impose un ordre strict et logique. L'idéal est bien sur que tout soit mis dans le même ordre. Il sera ainsi plus facile de localiser une éventuelle erreur.

 Une autre précision importante avant d'aller encore plus loin. Ce n'est pas parceque vous aurez respecté tout ce qu'écrit supra, que la ré-écriture fonctionnera. Je m'explique. En fonction du code à ré-écrire, il sera indispensable de transformer légèrement la source de ce dernier. En général, provenant d'un module. Je ne vais pas rentrer dans des détails qui me font mal à la tête sur le simple fait d'y penser. Je vais donc vous donner un simple exemple. Editez le fichier modules/Advetissing/index.php. A la ligne 62, version SV PHP-Nuke 8.1.04, vous trouverez la ligne de code suivante :

Code:
$client_opt = "<a href=\"modules.php?name=$module_name&op=client_home\">"._MYADS."</a>";

Telle quelle, cette ligne ne sera pas ré-écrite quant bien même tout le nécessaire aura été correctement inséré dans les fichier htaccess et header.php. Par contre, si vous transformez cette ligne en :

Code:
$client_opt = "<a href=\"modules.php?name=$module_name&amp;op=client_home\">"._MYADS."</a>";

tout fonctionnera correctement, pourquoi ? Tout simplement parceque $module_name&op a été tranformé en $module_name&amp;op. La différence se situe au niveau du & qui a été transformé en &amp;. Ceci est indispensable pour un bon fonctionnement de la ré-écriture d'URL. Alors, dans le cas où vous rencontrez un problème avec une ligne donnée, pensez à vérifier le code du module concerné, cela préservera tous vos cheveux .

 

 

2 - htaccess

  

Dans le htaccess, pour activer la ré-écriture, il n'y pas grande chose à faire dans un premier temps. Il vous suffit juste de rajouter le code suivant :

Code:
RewriteEngine on
# EMPLACEMENT POUR PLACER LES DIVERS CODES DE REECRITURE

Cette ligne informera votre serveur que vous souhaitez utiliser la ré-écriture d'URL.
Sauvegardez et envoyez le fichier sur votre serveur.
Passez à l'étape suivante.

  

3 - footer.php

Je n'ai pas parlé juqu'à maintenant du fichier footer.php pour la bonne et simple raison, qu'une fois les ligne de code qui suivent ajoutées, il n'y aura plus besoin de le modifier.

Editer le fichier footer.php qui se trouve à la racine de votre site et trouvez le code suivant, en général tout en bas :

Code:
foot();
?>


Ajouter juste avant ce code :

Code:
// Début du nécessaire à la réécriture d'URL
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($contents);
// Début du nécessaire à la réécriture d'URL


ce qui vous donnera :

Code:
// Début du nécessaire à la réécriture d'URL
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($contents);
// Début du nécessaire à la réécriture d'URL
foot();
?>


Sauvegardez et envoyez le fichier sur votre serveur.
Passez à l'étape suivante.

  

4 - header.php

 Editez le fichier header.php en tout début de fichier, trouvez le code suivant :

Code:
if (stristr(htmlentities($_SERVER['PHP_SELF']), "header.php")) {
   Header("Location: index.php");
   die();
}

define('NUKE_HEADER', true);


Ajoutez juste après ce code :

Code:
ob_start();

function replace_for_mod_rewrite(&$s) {
$urlin = array(

// EMPLACEMENT POUR PLACER LES DIVERS CODES DE REECRITURE

);
$urlout = array(

// EMPLACEMENT POUR PLACER LES DIVERS CODES DE REECRITURE

);

$s = preg_replace($urlin, $urlout, $s);
return $s;
}



Là où il est mentionné // EMPLACEMENT POUR PLACER LES DIVERS CODES DE REECRITURE est l'emplacement prévu pour placer le code de ré-écriture des différents modules. Vous trouverez tout le nécessaire dans les tutoriaux.

Vous noterez que l'on retourve les deux parties, $urlin et $urlout, dont je vous expliquais la fonction en début du tutorial.

Il ne vous reste plus qu'à insérer les lignes de code correspondante pour le ré-écriture de vos divers module.

 

 Publié le : 2007-07-26 par stefvar, dernière modification le : 2007-09-13 par stefvar(291 lectures)


Copyleft © par Stefvar. L'utilisation totale ou partielle de cette source est totalement interdite sans autorisation écrite de ma part.

Syndiquez notre contenu RSS, Atom, etc..
PHP-Nuke © 2007Reproduction interdite sans autorisation de ma part www.stefvar.com Copyright © 2008Thème iCGstation
Site français de la communauté PragmaMx