[URL Rewriting] utiliser une fonction PHP...mais où ?

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

Sami
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: Sam Sep 21, 2002 12:15

[URL Rewriting] utiliser une fonction PHP...mais où ?

Message le Ven Nov 11, 2005 14:42

Bonjour,
J'ai défnies des règles dans mon fichire .htaccess mais elles n'ont pas marché, alors j'ai trouvé un script php qui fait la même chose :
Code: Tout sélectionner
function lienurlrewriting($url) {
   if (eregi("(.*).php(.*)",$url,$regs)) {
      $monurl = $regs[1];
      $geturl = $regs[2];
      while (eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs)) {
         $geturl = $regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
      }
      $url = $monurl.$geturl;
   } elseif(eregi("(.*).php",$url,$regs)) {
      $url = $regs[1];
   }
   return $url.".html";
}

Lien : http://www.webmaster-experience.net/art ... cle-2.html

Cependant je ne sais pas comment l'intéger ?? et comment il sera appelé ? bref je n'ai pas compris comment l'utiliser.
Je voudrais l'appliquer à la page suivante :

http://www.toto.com/accueil.php?paramA=1&paramB=TITI

où intéger cette fonction ? comment l'exploiter ? ...

xrates
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Ven Juin 17, 2005 3:47

Message le Ven Nov 11, 2005 15:11

Je serais intéressé +1

La met t'on sur chaque page?


merci

alain-b
WRInaute impliqué
WRInaute impliqué
 
Messages: 376
Inscription: Mar Déc 17, 2002 23:00

Message le Ven Nov 11, 2005 17:22

A mon avis il faut commencer dans le .htaccess à rediriger toutes les pages html vers le fichier index.php.

La fonction Php sert a extraire les variables utiles de l'adresse html. La variable $url est $_SERVER['REQUEST_URI']

La fonction filtre index.php et a partir de variables, on construit alors les pages spécifiques.

Sami
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: Sam Sep 21, 2002 12:15

Message le Sam Nov 12, 2005 10:47

c-a-d que dans notre page index.php on aura un truc du genre :
Code: Tout sélectionner
<?
...
header(lienurlrewriting($url));
?>

c'est ça ?[/quote]

alain-b
WRInaute impliqué
WRInaute impliqué
 
Messages: 376
Inscription: Mar Déc 17, 2002 23:00

Message le Sam Nov 12, 2005 13:31

Je crois que j'avais mal lu le code. En fait cette fonction n'est pas utilisée pour remplacer le module rewrite d'apache mais pour générer des adresses html dans un script php. ( C'est l'opération inverse .. par exemple dans un script de forum ou de petites annonces, c apermet de générer des adresses html).

Mais c'est tout a fait possible de se passer du module rewrite. Comme je le disais on redirige toutes les pages avec l'extension HTML sur le fichier index.php et on utilise une routine qui parse l'adresse HTML récupérée dans REQUEST_URI pour extraire les variables. Il faut utiliser les fonction de traitement de chaines de caractère de php et les expressions régulières. Ce qui est aussi complexe que d'utiliser le mode rewrite dans le .htacess ...

Sami
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: Sam Sep 21, 2002 12:15

Message le Dim Nov 13, 2005 20:49

et la fonction ci-dessus ne permet par de parser les url ? le pb c'est que l'utilité et surtout, l'utilication, n'est pas claire du tout !!!
Si je demande des détails concernant cette fonction c'est parceque les règles définies dans le fichiers .htaccess ne veulent par marcher :( Mon but étant de faire l'urlrewriting pour des pages php comme index.php?marque=TOTO&id=1

rtb
WRInaute accro
WRInaute accro
 
Messages: 1055
Inscription: Dim Nov 14, 2004 11:56

Message le Dim Nov 13, 2005 21:28

peut etre poster dans le forum htaccess et rewriting les regles qui ne fonctionnent pas, y'a pas mal de monde qui connaissent bien le sujet et qui sont pret a donner des conseils avisés ;-)

alain-b
WRInaute impliqué
WRInaute impliqué
 
Messages: 376
Inscription: Mar Déc 17, 2002 23:00

Message le Lun Nov 14, 2005 23:32

Sami a écrit: Mon but étant de faire l'urlrewriting pour des pages php comme index.php?marque=TOTO&id=1


Si ton site utilise un script qui génére des adresses de ce type
index.php?marque=TOTO&id=1
tu peux effectivement utiliser la fonction pour transformer ces adresses en adresses avec extension HTML dans tes pages.
Mais il faudra utiliser le module rewrite et le .htaccess lors de l'appel des pages pour effectuer l'opération inverse ( récupérer les variables)

Sami
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: Sam Sep 21, 2002 12:15

Message le Mar Nov 15, 2005 10:11

alain-b a écrit:Si ton site utilise un script qui génére des adresses de ce type
index.php?marque=TOTO&id=1

:?: je n'ai pas de script qui génère ces url, j'ai une page index.php qui est appelée avec différents paramètres c'est tout. Et j'ai plein d'autres page de ce gente avec + ou - de paramètres.

alain-b
WRInaute impliqué
WRInaute impliqué
 
Messages: 376
Inscription: Mar Déc 17, 2002 23:00

Message le Jeu Nov 17, 2005 20:28

Soit tu ré-écris à la main les adresses php en adresses html, soit tu utilises la fonction pour faire la meme opération.

$lien_html=lienurlrewriting($lien_php)

La 2em étape, c'est d'appliquer la regle inverse dans le .htaccess pour que le site fonctionne.

chione
Nouveau WRInaute
 
Messages: 17
Inscription: Mar Jan 10, 2006 1:45

Message le Mar Jan 10, 2006 2:37

J'ai la réponse, il se trouve que j'avais déjà utilisé cette fonction avant.

voilà, cette fonction transforme une url de la forme www.toto.com/tete.php?00=teteatoto en www.toto.com/tete-00-teteatoto.html.
Pour que la fonction fonctionne, il faut soit l'écrire avant de l'appeler, soit le mettre dans un fichier fonction exemple fonctions.php puis de l'appeler avec un include include("fonctions.php");

ensuite il te faut mettre un fichier htaccess aproprié qui contient des regex qui correspondent à la fonction: et le voilà:

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html /$1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html /$1.php?$2=$3$4 [L]
RewriteRule ^(.*).html /$1.php [L]


voilà, ça devrait fonctionner, seul truc, si vous n'etes pas dans le fichier racine (exemple vous etes sur www.toto.com/chemin/fichier.php, changé le fichier .htaccess comme suit:

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html chemin/$1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html chemin/$1.php?$2=$3$4 [L]
RewriteRule ^(.*).html /$1.php [L]


dans tous les cas, utilsez des url absolues et non relatives.

Si y'a des questions je serais heureux d'y répondre.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités