Réécriture url

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

Modérateur: Modérateurs

Réécriture url

Messagede johnstyle » Lun Déc 04, 2006 9:45 pm

Bonjour,
jessaye de comprendre l'url rewriting mais encore beaucoup de zone d'ombres persistes.

C'est pourquoi je vient faire apel a vous.

Voila, je suis entrain de développer un annuaire, la pluspart des url sont déjà rewriter. Il me reste juste un type d'url mais c'est là ou je bloque.

mon url est du type :

Code: Tout sélectionner
http://www.monsite.com/fiche.php?id_site=www.sitemembre.com&select=fiche


et je voudrais avoir ceci :

Code: Tout sélectionner
http://www.monsite.com/www.sitemembre.com.html


Déja, j'aimerai savoir si c'est possible d'avoir un url de ce type vu qu'il y a "2 url en 1".

Merci d'avance pour votre aide.
Johnstyle
Avatar de l’utilisateur
johnstyle
 
Messages: 6
Inscription: Lun Déc 04, 2006 9:25 pm
Localisation: Lyon

Publicité

Messagede dcz » Mar Déc 05, 2006 6:20 pm

La bienvenue :D

Je pense que oui, mais j'ai jamais essayé.

Le problème c'est les cas spéciaux, genre sous domaines ou domaines sans préfixe.
Le plus simple serait faire des liens du type :


Code: Tout sélectionner
http://www.monsite.com/liens/www.sitemembre.com.html


Ou liens/ ne serait pas un vrai dossier.

Comme ça, cela nous permettrait de filtrer ce type de requêtes très facilement, en matchant ^liens/ en début de RegEx.

Une façon très simple de procéder serait :

Code: Tout sélectionner
RewriteRule ^liens/([0-9A-Za-z_\.-]+)\.html$ /fiche.php?id_site=$1 [L]


Bien entendu, il faudrait bien vérifier la variable récupérée dans fiche.php avant d'interagir avec la db, mais on trie déjà pas mal de choses.
Déjà, le dossier virtuel permet de ne pas activer la rewriterule sur d'autres dossiers (virtuels ou pas), ensuite, on accepte uniquement un chaîne de caractères pouvant contenir des chiffres et quelques exceptions comme "-", "." et "_" (a voir si "," serait utile, pour un annuaire, je doute) et se terminant par ".html".

Il reste donc à passer la variable récupérée dans : id_site, ce qui doit, si le code est propre déjà être fait : valider l'url et la nettoyer éventuellement de code non appropriés.

Enfin, si notre dossier est virtuel côté serveur, pas besoin de modifier aucun chemin d'includes etc, le fichier fiche.php reste ou il est, les navigateur vont eux vraiment y croire, et tous les liens relatifs seront compris comme commençant à partir de ce dossier virtuel.

Du coup, les liens absolue, répétant l'url complète avec NDD, c'est pratique ;)

++

Enfin, comme tu
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: 21379
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede johnstyle » Mar Déc 05, 2006 11:46 pm

Je te remerci de ton aide.
Je vais tester ça ^^
Avatar de l’utilisateur
johnstyle
 
Messages: 6
Inscription: Lun Déc 04, 2006 9:25 pm
Localisation: Lyon

Messagede dcz » Mar Déc 05, 2006 11:49 pm

Je pensait à un truc en réfléchissant à ce sujet.

Code: Tout sélectionner
RewriteCond!-f
RewriteRule ^([0-9A-Za-z_\.-]+)\.html$ /fiche.php?id_site=$1 [L]


Permet de trier les cas sans dossier virtuel.

Valable si c'est la seule injection qui se finit par .html à la racine. On teste d'abord si il s'agit d'un fichier physique, dans le cas contraire on redirige.

++
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: 21379
Inscription: Ven Avr 28, 2006 9:03 pm


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 2 invités