Rewriting et fichier robots.txt

Discussion sur le mod rewrite d'Apache : .htaccess, utilisation, expériences... Réécriture d'URL (URL rewriting).

Modérateur: Modérateurs

Rewriting et fichier robots.txt

Messagede francis77777 » Lun Déc 18, 2006 2:24 pm

Bonjour,

J'aurais besoin de votre aide...
Mon site est -http://www.importateurs-exportateurs.com
Certains disent qu'il faut creer un fichier robots.txt, d'autres un fichier .htaccess

Mon soucis est que ma page d'accueil s'appelle index.php et que je n'arrive pas à faire un Rewrite pour les pages suivantes ou précedente.
Actuellement ces pages s'affichent :
Code: Tout sélectionner
http://www.importateurs-exportateurs.com/index.php?page=2


j'ai crée un fichier .htaccess dans lequel j'ai écris :
Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^importateurs-exportateurs.com$
RewriteRule ^(.*)   http://www.importateurs-exportateurs.com/$1  [QSA,L,R=301]

ErrorDocument 403 http://www.importateurs-exportateurs.com/403.html
ErrorDocument 404 http://www.importateurs-exportateurs.com/404.html
RewriteRule ^visualisation_annonce.html$ visualisation_annonce.php
RewriteRule ^visualisation_annonce-([0-9]*)\.html$ visualisation_annonce.php?id=$1 [L]
RewriteRule ^business_liens.html$ business_liens.php


Je n'arrive pas à supprimer le
?

pour un meilleur réferencement.
D'avance je vous remercis de m'aider.

Francis
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Publicité

Messagede dcz » Lun Déc 18, 2006 2:47 pm

La bienvenue :D

Donc, le truc avec la réécriture d'url, c'est que ça se passe en deux étapes. d'un côté la transformation des liens dans le script, php en l'occurrence, et de l'autre le module apache mod_rewrite qui, grâce au .htaccess, va nous permettre de faire marcher ces nouvelles URLs.

Pas mal de principes généraux de la réécriture d'url ont été abordés sur ce fil.

Donc, sit tu as des URI comme /index.php?page=xx , tu pourrais les réécrire en tittre-page-pxx.html ou "-p" serait notre délimiteur pour l'injection du titre.

Et d'ensuite, ajouter la rewriterule permettant le bon fonctionnement de ces nouvelles URLs :
Code: Tout sélectionner
RewriteRule ^.+-p([0-9]+)\.html$ /index.php?page=$1 [QSA,L]


On se rend vite compte que le vrai boulot est celui de réécrire les URLs dans le script, ce qui dépends grandement de la façon dont il est construit.

En général, il est possible de le faire sans tout refaire le site, voir assez simplement, mais il faut bien connaître le script.

Plus simplement, tu pourrais faire de la réécriture statique sur cet exemple :

Code: Tout sélectionner
/index.php?page=xx => pagexx.html


avec :

Code: Tout sélectionner
RewriteRule ^page([0-9]+)\.html$ /index.php?page=$1 [QSA,L]


ou "page" peut être remplacer par ce que tu veux.

Pour le coup du ?, je ne suis pas sûr d'avoir bien saisit, mais les principes énoncés ici sont valables pour tous les cas, cela se corse juste un peut quand il y a plus de variables a gérer, comme la pagination.

Et pas grand rapports avec le robots.txt, lui nous servira a interdire les URL naturelles devenues indésirables.

Pour cet exemple ce serait :

Code: Tout sélectionner
Disallow: /index.php?


Pour autoriser /index.php mais pas index.php?...

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 3:00 pm

Tout d'abord, un grand merci pour s'être pencher sur mon probleme.

Dans ma page index.php, j'ai des résultats d'annonces mais sur 3 pages. voilà ce qui est écris:
Code: Tout sélectionner
$nom_page_actuelle = "index.php?";
$resultats_page = 150;

Quand Google passe, il ne prend en compte que la 1° page, a cause du ?
Comment puis je modifier ce ? le réecrire proprement.

Merci

Francis
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 3:07 pm

De rien ;)

Si :
Code: Tout sélectionner
$nom_page_actuelle = "index.php?";


est l'initialisation de la variable $nom_page_actuelle qui est par la suite utilisée pour construire des liens page, en lui ajoutant simplement page=xx d'une façon proche de :

Code: Tout sélectionner
$nom_page_actuelle .= "page=$id";


alors, il suffirait de retirer le ? au début :

Code: Tout sélectionner
$nom_page_actuelle = "index.php";


Pour l'ajouter uniquement quand il est nécessaire un truc comme :

Code: Tout sélectionner
$nom_page_actuelle .= "?page=$id";


Et au fait, j'ai oublié de te dire, visualisation_annonce.php?id=, il vaut mieux éviter de se retrouver avec des "id" dans les URL, Google n'aime pas du tout, d'autres nom de variable oui, mais "id", c'est "grillé".

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 3:17 pm

Le fait de mettre $id dans visualisation_annonce.php me va bien puisque GG l'a bien pris en compte.
Par contre contre je n'arrive toujours pas à supprimer ce ? de ma page index.php.
J'ai téster ce que tu m'adonner, mais rien.
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 3:19 pm

Il viens forcément de ton code php.

Il faut trouver où.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 3:30 pm

En fait je me suis mal expliqué..
Ce ? je sais ou il est mais ce que je ne sais pas faire c'est modifier ce morceaux de code pour que GG puisse me réferencer toutes les pages.
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 3:36 pm

Il faut que tu recherches "index" dans ton index.php, et que tu suives le processus de fabrication du lien vers index.php.

Froncement, un ? est ajouté avant qu'il ne soit utile pour que tu te retrouves avec des url en -www.example.com/index.php?

Le seul, truc en l'enlevant là ou il est ajouter trop tôt, c'est de le mettre là ou il deviens utiles, quand des liens du type index.php?page=xx sont construits.

Il faudra peut être aussi utiliser un variable en plus pour bien séparer les cas, mais le principe c'est ça, virer ce ? quand il est inutile.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 3:42 pm

Je t'embetes mais là je ne pige plus....
voilà mon morceaux de code de pagination

Code: Tout sélectionner
if($total_resultats_sql != FALSE)
                  {
                            $nom_page_actuelle = "index.php?"; //nom de page actuelle - à changer si renommage
                            $resultats_page = 150; //nombre de résultats par page
                     $total_resultats = mysql_num_rows($total_resultats_sql); //nombre total de résultats.
                     $total_pages = ceil($total_resultats/$resultats_page); // nombre total de pages.
                     if(isset($_GET["page"]))
                     {
                        if(htmlentities(stripslashes($_GET["page"]),ENT_QUOTES) > $total_pages)
                        {
                           $page_actuelle = $total_pages; // si page supérieure nombre existant ==> dernière page
                        }
                        elseif(htmlentities(stripslashes($_GET["page"]),ENT_QUOTES) < 1)
                        {
                           $page_actuelle = 1; // si page inférieure nombre existant ==> première page
                        }
                        else
                        {
                           $page_actuelle = htmlentities(stripslashes($_GET["page"]),ENT_QUOTES); //si ok, récupération numéro de page formaté contre injections sql
                        }
                     }
                     else
                     {
                        $page_actuelle = 1; // si aucune page ==> première page
                     }
                     // script navigation intelligente
                     // de forme << < 10 | 11 | 12 | 13 | 14 > >>
                     
                     // pour le <<
                     if(($page_actuelle-5) > 0)
                     {
                        $placement_navigation_1 = "<a href='".$nom_page_actuelle."page=".($page_actuelle-5)."'>&lt;&lt;</a> ";
                     }
                     else
                     {
                        $placement_navigation_1 = "";
                     }
                     
                     // pour le <
                     if($page_actuelle != 1)
                     {
                        $placement_navigation_2 = "<a href='".$nom_page_actuelle."page=".($page_actuelle-1)."'>&lt;</a> ";
                     }
                     else
                     {
                        $placement_navigation_2 = "";
                     }
                     
                     // pour le 10
                     if(($page_actuelle-2) > 0)
                     {
                        $placement_navigation_3 = "<a href='".$nom_page_actuelle."page=".($page_actuelle-2)."'>".($page_actuelle-2)."</a> ";
                     }
                     else
                     {
                        $placement_navigation_3 = "";
                     }
                     
                     // pour le 11
                     if(($page_actuelle-1) > 0)
                     {
                        $placement_navigation_4 = "<a href='".$nom_page_actuelle."page=".($page_actuelle-1)."'>".($page_actuelle-1)."</a> ";
                     }
                     else
                     {
                        $placement_navigation_4 = "";
                     }
                     
                     // pour le 12
                     $placement_navigation_5 = "<a href='".$nom_page_actuelle."page=".$page_actuelle."'><font color='red'>".$page_actuelle."</font></a> ";
                     
                     // pour le 13
                     if(($page_actuelle+1) <= $total_pages)
                     {
                        $placement_navigation_6 = "<a href='".$nom_page_actuelle."page=".($page_actuelle+1)."'>".($page_actuelle+1)."</a> ";
                     }
                     else
                     {
                        $placement_navigation_6 = "";
                     }
                     
                     // pour le 14
                     if(($page_actuelle+2) <= $total_pages)
                     {
                        $placement_navigation_7 = "<a href='".$nom_page_actuelle."page=".($page_actuelle+2)."'>".($page_actuelle+2)."</a> ";
                     }
                     else
                     {
                        $placement_navigation_7 = "";
                     }
                     
                     // pour le >
                     if(($page_actuelle+5) <= $total_pages)
                     {
                        $placement_navigation_8 = "<a href='".$nom_page_actuelle."page=".($page_actuelle+5)."'>&gt;</a> ";
                     }
                     else
                     {
                        $placement_navigation_8 = "";
                     }
                     
                     // pour le >>
                     if($page_actuelle < $total_pages)
                     {
                        $placement_navigation_9 = "<a href='".$nom_page_actuelle."page=".$total_pages."'>&gt;&gt;</a> ";
                     }
                     else
                     {
                        $placement_navigation_9 = "";
                     }
                     // Pour afficher la navigation, faire un:
                     // echo $navigation_barre;
                     // à l'endroit où tu souhaites insérer la navigation
                     $navigation_barre = $placement_navigation_1.$placement_navigation_2.$placement_navigation_3.$placement_navigation_4.$placement_navigation_5.$placement_navigation_6.$placement_navigation_7.$placement_navigation_8.$placement_navigation_9;
                     // fin script navigation intelligente
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 3:53 pm

Tu as essayé de remplacer :

Code: Tout sélectionner
$nom_page_actuelle = "index.php?";


Par :

Code: Tout sélectionner
$nom_page_actuelle = "index.php";

Et tous les :

Code: Tout sélectionner
$nom_page_actuelle."page="


Par

Code: Tout sélectionner
$nom_page_actuelle."?page="


Pour voir ?
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 3:55 pm

Je fais le test de suite

merci
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede francis77777 » Lun Déc 18, 2006 3:58 pm

J'ai toujours ce resultat

Code: Tout sélectionner
http://www.importateurs-exportateurs.com/index.php?page=2
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 4:05 pm

Ah mais on se comprend pas, ce ? il est très utile à cette place.

Pour améliorer les URLs plus que ça il n'y a que la réécriture d'url.

Tu pourrais partir su la piste statique tout d'abord, en remplaçant:

Code: Tout sélectionner
$nom_page_actuelle = "index.php?";


Par :

Code: Tout sélectionner
$nom_page_actuelle = "page";


Et tous les :

Code: Tout sélectionner
<a href='".$nom_page_actuelle."page=".($page_actuelle-xx)."'>


Par :

Code: Tout sélectionner
<a href='".$nom_page_actuelle.($page_actuelle-xx).".html'>


en mettant à chaque fois la bonne valeur pour xx (1,2 etc ..). Et aussi tu peux remplacer "page" par ce que tu veux tant que tu le fait aussi dans la rewriterule.

Avec :

Code: Tout sélectionner
RewriteRule ^page([0-9]+)\.html$ /index.php?page=$1 [QSA,L]


Ca devrais marcher, mais à voir si ça perturbe pas d'autres parties du script pour la fabrication des liens.

Le cas échéant, tu pourrais peut être remplacer $nom_page_actuelle par genre $nom_page_actuelle2 dans tout le bout de code, pour ne pas interférer.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede francis77777 » Lun Déc 18, 2006 4:22 pm

NICKELLLLLLLLLLLLLLLLL
Ca fonctionne

Code: Tout sélectionner
http://www.importateurs-exportateurs.com/page4.html


Vraiment je te remercie.

Francis
francis77777
 
Messages: 9
Inscription: Lun Déc 18, 2006 2:12 pm

Messagede dcz » Lun Déc 18, 2006 5:52 pm

De rien ;)

Les urls types pagexx.html marchent bien, mais les liens de pages en bah à droite sont pas réécrits.

Enfin, tu saisit le principe, sur des scripts pas trop lourd, il n'y a pas beaucoup d'endroit à éditer en général.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21291
Inscription: Ven Avr 28, 2006 9:03 pm

Suivante

Retourner vers mod rewrite Apache

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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