problème réécriture de /?p=page en /page

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Florian118
Nouveau WRInaute
 
Messages: 2
Inscription: Sam Sep 02, 2006 18:32

problème réécriture de /?p=page en /page

Message le Sam Sep 02, 2006 18:43

Bonsoir,
j'ai un site avec une page index.php à la racine qui inclut la page demandée dans le
paramètre p, par exemple : /index.php?p=contact ou simplement /?p=contact.
J'aimerais transformer ca en : /contact

J'ai donc écrit dans .htaccess :
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^(\w+)$ ?p=$1


Ca fonctionne parfaitement en local. Mais dès que j'y place sur le
serveur, il me retourne une erreur 404 ou pire 500.
J'ai essayé de :
- remplacer \w par [a-z] (même si ce n'est pas équivalent) : aucun effet
- remplacer \w par . ou \w+ par \w*: erreur 500 !
- ajouter Options +FollowSymLinks (même si j'ai pas cerné l'intérêt)
- ajouter [L] ou [QSA] (on sait jamais)
- remplacer ?p= par /?p= ou index.php?p= ou /index.php?p= : aucun effet
- etc...

Je ne connais pas exactement la version d'Apache, mais je pense à Apache
2. En local, j'ai la 2.0.58.

J'ai lu ce que je pouvais sur l'URL rewriting, dont partie de la doc Apache, et je ne vois pas quelle requête effectuer à google pour un problème aussi vague.

En attendant, j'ai placé

RewriteRule ^liens$ ?p=liens
RewriteRule ^contact$ ?p=contact
RewriteRule ^recrutement$ ?p=recrutement
etc...

à la place, et ca dépanne.

D'avance merci pour votre aide.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Dim Sep 03, 2006 12:35

Code: Tout sélectionner
RewriteRule   ^([^/]*)\$    /index.php?p=$1 [L]
ou
RewriteRule   ^([^/]*)\$    index.php?p=$1 [L]

Florian118
Nouveau WRInaute
 
Messages: 2
Inscription: Sam Sep 02, 2006 18:32

Message le Dim Sep 03, 2006 13:35

KOogar a écrit:
Code: Tout sélectionner
RewriteRule   ^([^/]*)\$    /index.php?p=$1 [L]
ou
RewriteRule   ^([^/]*)\$    index.php?p=$1 [L]
Merci, mais ca ne peut pas fonctionner si tu échappes le $.
Code: Tout sélectionner
RewriteRule ^([^/]*)$ index.php?p=$1 [L]
fonctionne. Mais je ne comprends pas pourquoi. Du moment que la partie locale de l'URL ne contient pas de slash, ce code devrait être équivalent à ^(.*)$ non ? D'ailleurs, le dernier slash du nom de domaine appartient bien à la partie locale ? Dans ce cas, il faudrait écrire ^/([^/]*)$, ce qui ne fonctionne pas...


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Dim Sep 03, 2006 14:19

[^/]* prend tous les caractères sauf / dans le cas présent, ^(.*) prend tous les caractères y compris le /
En fait certain serveur pointe directement derriere le / et le rajoute par defaut comme le tien, c'est super mal fait et ca fait doublon, donc soit tu marques l'url entiere, soit tu enlèves le / pour éviter le doublon.
Pour le \$ je ne savais pas car je n'avais jamais tester, j'ai appris qq chose today!! perso je préfère laisser l'extension d'une manière générale pour ne pas embrouiller les surfers qui sont déjà assez noob comme ca.


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. 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