Débuter en url rewriting

  • Auteur de la discussion Auteur de la discussion cotp
  • Date de début Date de début
WRInaute discret
Bonjour à tous :)
Voilà après avoir lu pas mal de messages sur le forum de webrankinfo ainsi que sur celui de mon hébergeur (OVH), je tente de me lancer dans l'aventure de l'URL Rewrting. 8)
1) Sur mon site j'ai des url du type:
Code:
http://www.monsite.com/rep/article.php?idarticle=11
et
Code:
http://www.monsite.com/rep/recherche2.php?idcat=1&idsty=2&page=1

mes variables sont:
Code:
$article
$idcat
$idsty
$page


2) Que dois-je écrire dans le fichier htaccess ainsi que dans mes pages php pour que je puisse avoir des url du genre:

Code:
http://www.monsite.com/categorie-style-article.html
et
Code:
http://www.monsite.com/categorie-style-page1.html

Merci par avance pour vos lumières,

Cotp
 
WRInaute discret
J'ai du mal à cerner la correspondance exacte car dans ce que tu décris je ne vois pas le même nombre de paramètres, mais dans le principe (Attention je me lance..) pour obtenir que categorie-page1.html
soit réécrit et appelle en fait /rep/article.php?idarticle=1 (ou plutot /categorie/article.php?idarticle=1 donc en supposant que la catégorie que tu codes dans ton lien en HTML soit celle dont tu fais un répertoire sur le serveur ? Sinon je ne vois pas le rapport entre categorie et rep ou le 1 et le 11 à moins qu'il y ait un système de conversion autre dans une page dynamique après...)
il te faudrait je pense

RewriteRule ^(.*)-page([.*).html$ /$1/article.php?idarticle=$2

j'avoue que je débute, j'espère que ca roule ;-)
 
WRInaute occasionnel
Pour la premiere ligne tu n'as que le parametre article, donc tu ne peux pas faire apparaitre la categorie, ni le style dans l'url.

Pour la deuxième ligne c'est ça :

RewriteRule ^([0-9]+)-([0-9]+)-([0-9]+).html$ recherche2.php?idcat=$1&idsty=$2&page=$3

Et pour la premère c'est le même principe.
 
WRInaute discret
Merci à vous deux pour ces premières réponses.
Effectivement dans le premier url je n'affiche pas la catégorie dans l'url car je la récupère (via MYSQL) par une requete sur l'id de l'article.
Donc si je vous ai bien suivi, si je la veut dans l'url en rewrting, je suis "obligé" de la faire apparaitre dans mon url en php. C'est ça ?

Je vais essayer de me lancer avec vos premières infos et je vous tiens au courant.


Cotp
PS: Conseil... Ensuite mes liens je les écris en html ou en php ?

**suite**
J'ai mis le code de wasabi dans un fichier htaccess placé dans mon repertoire nommé "rep"... et ça ne marche pas :( Qu'est-ce qui se passe a votre avis ?
 
WRInaute discret
A priori le fichier htaccess devrait etre en racine d'après ce que tu as décrit,ou alors categorie ne correspond pas à ce rep et tu ne t'en sers pas ? En tous cas un htaccess n'agit que sur l'arborescence du niveau où il se trouve, et éventuellement ceux du dessous, mais les droits et règles ne remontent pas.
Tous les liens internes du site doivent ensuite être apparemment en html, c'est tout l'interet que ce gerne de liens apparaisse dans ton site même s'ils sous ensuite en sous-main pris en charge par le serveur Apache qui les réécrit et transforme.
Commence par tester tout cela sur des pages simples et liens basiques, tu pourras en php afficher ce qui se passe ou regarder dans ton fichier log d'accès.
 
WRInaute discret
dsaunier a dit:
A priori le fichier htaccess devrait etre en racine d'après ce que tu as décrit,ou alors categorie ne correspond pas à ce rep et tu ne t'en sers pas ?

Tous mes deux fichiers php sont dans un repertoire (que j'ai appellé ici par rep par commodité de lecture) qui n'a effectivement rien à voir avec la catégorie.

En réalité j'ai 2 pages dans ce répertoire:
1) une page recherche (recherche2.php) qui affiche les articles selon la catégorie et le style choisi par une barre de nav
2) un page resultat (article.php) qui affiche un élément donné après la recherche.


dsaunier a dit:
En tous cas un htaccess n'agit que sur l'arborescence du niveau où il se trouve, et éventuellement ceux du dessous, mais les droits et règles ne remontent pas.
Ca devrait être bon puisque je l'ai placé dans le même répertoire que les pages en question.

dsaunier a dit:
Tous les liens internes du site doivent ensuite être apparemment en html, c'est tout l'interet que ce gerne de liens apparaisse dans ton site même s'ils sous ensuite en sous-main pris en charge par le serveur Apache qui les réécrit et transforme.

Ok mais alors qu'est-ce qui cloche à ton avis pour l'instant ?

Cotp
PS:
Voici après différentes tentatives mon fichier htaccess, placé cette fois à la racine du site :
Code:
Options +FollowSymlinks
RewriteEngine On 
RewriteRule  ^nomdemonsite([0-9]+)categorie([0-9]+)style([0-9]+)\.html$  /rep/article.php?idarticle=$1 [L]
RewriteRule  ^nomdemonsite([0-9]+)categorie([0-9]+)style([0-9]+)\.html$  /rep/recherche2.php?idcat=$1&idsty=$2&page=$3 [L]
 
WRInaute occasionnel
essaye de rajouter cette ligne en dessous de rewriteengine On :
RewriteBase /

et si ça ne marche pas, enlève le / de /rep/
 
WRInaute discret
Lu sur les guides OVH:

Mod_rewrite et Mod_ORT
ORT (Ovh Redirect Technology) est un module développé par OVH qui
nous permet d'héberger un nombre important de sites avec peu de
RAM utilisée sur les machines.

Mod_ort modifie l'URI de la page et vous pouvez donc avoir un problème
si vous voulez utiliser mod_rewrite. La solution consiste à redefinir dans
mod_rewrite la racine de reécriture:

Code:
RewriteRule ^/grp([0-9]+)\.php$ groupe.php?id=$1 [L]
RewriteRule ^/art([0-9]+)\.php$ article.php?id=$1 [L]
RewriteRule ^/age([0-9]+)\.php$ agenda.php?id=$1 [L]
RewriteRule ^/membre_([0-9]+)\.php$ membre.php?id=$1 [L]

doivent être changés en

Code:
RewriteRule ^/grp([0-9]+)\.php$ /groupe.php?id=$1 [L]
RewriteRule ^/art([0-9]+)\.php$ /article.php?id=$1 [L]
RewriteRule ^/age([0-9]+)\.php$ /agenda.php?id=$1 [L]
RewriteRule ^/membre_([0-9]+)\.php$ /membre.php?id=$1 [L]

ou ici sur le forum.
 
WRInaute discret
Wasabi, dsaunier, je n'y arrive pas ! :(
Qu'est-ce qui ne va pas ?
Je sais que ça ne vient pas de mon hébergeur (OVH) car j'ai un forum phpbb dessus, dans lequel j'ai réussi à installé l'URL Rewriting.

Quand je tape directement l'url en php dans la barre d'adresse ça devrait le réecrire en html ou pas ? :?

Pouvez vous me donner un code de fichier php et Htaccess afin que je puisse tester directement si l'URL Rewriting fonctionne bien ?

Cotp
PS: autre chose pour la suite, si j'avais dans l'url idcat=1&idsty=2&page=1 comment vais-je récupérer ces 3 variables dans ma page rewritee ? Dois-je adapter le code php ?
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut