rewrite rule index.php?p=1.1.1 etc ...

Nouveau WRInaute
Bonjour tout le monde,

J'aurai une petite question ne conaissant pas grand chose avec les rewrite rule, j'aimerais toute même essayer quelque chose sur mon serveur web.

Je m'explique: Mes pages php sont construites par un Script qui recoit des paramètres du style index.php?p=1.1.1 ?p=1.2.2 etc ...

Pour une question de simplicitl j'aurai voulu faire un rewrite rule qui analyse les pages tout qui comence pas par www.md.com/index.php?p=1.1.1 est renvoyé sur un Script qui récupère l'url par exemple www.md.com/news et qui fait un check dans la bd s'il trouve un enregistrement. Pour le code php il n'y a pas de souci c'est juste comment écrire cette rewrite rule.

Peut-être quelqu'un pourra m'aider ce serait très gentil.

:lol:

Bonne réception,
 
Nouveau WRInaute
Salut,

Merci pour ta réponse. En fait ce que j'aimerais faire est que si l'url demander n'est pas du type www.md.com/index.php?p=1.2.4 donc par exemple www.md.com/news la règle renvoie vers une page requestUrl.php ou j'ai un Script PHP qui récupère l'url de base($_ENV['REQUEST_URI']) donc www.md.com/news puis aille comparer dans ma table.

Ou j'ai des champs par exemple www.md.com/news coresspond à www.md.com/index.php/index.php?p=1.2.4 et la je fais un header location sur la bonne page.

Je ne sais pas si je me suis bien exprimé (pas trop fort en français :oops: )

Merci beaucoup,
 
Nouveau WRInaute
Merci pour ta réponse. En fait non pas vraiement.

En tappant www.md.com cela ouvre www.md.com/index.php.

Puis mes liens sont du type
www.md.com/index.php?p=1.1.1 cela ouvre par exemple des news.
www.md.com/index.php?p=1.1.2 cela ouvre par exemple des infos.
etc ...

Ce que j'aimerais faire est que si un internaute tape directement www.md.com/news ouvre la page www.md.com/index.pgp?p=1.1.1.

Donc dans mon rewriterule il devrait avoir une règle

Tous les url qui ne sont pas du type www.md.com/index.php?p=x.x.x sont rediriger vers ma page requestUrl.php et dans cette "page" je récupère l'url et fait un check dans ma table.

Comme par exemple les erreurs 404 www.md.com/toto "toto" n'existe pas donc redirigé vers la page erreur 404.

Merci pour ton aide,
 
WRInaute accro
Il ne s'agit pas d'une réécriture mais d'une redirection ??

Code:
# -www.md.com/news
# rediririge vers
# -www.md.com/index.php?p=1.1.1

RewriteCond %{REQUEST_URI} news/.*
RewriteRule ^$ /index.php?p=1.1.1 [L]

ou tout simplement

Code:
RedirectPermanent /news  http://www.site.com/index.php?p=1.1.1

*************

Si il s'agit d'une réécriture ??

ton lien relatif

Code:
<a href="/news/">

et la réécriture avec l'url physique en absolue

Code:
RewriteRule ^news/$  http://www.site.com/index.php?p=1.1.1 [L]
 
WRInaute accro
oui, c'est donc une réécriture, ce que je t'ai indiquer plus haut. rien de plus classique... au passage je ne me repeterai pas une troisieme fois. Merci a toi d'essayer de compredre le principe et de commencer a l'appliquer.

tu apel l'adresse -www.md.com/news/ dans ton navigateur et le moteur enverra la page -www.site.com/index.php?p=1.1.1 au navigateur.

ton lien aura cette forme

Code:
<a href="www.md.com/news/">


et la réécriture

Code:
RewriteEngine on
RewriteRule ^news/$  http://www.site.com/index.php?p=1.1.1 [L]
RewriteRule ^info/$  http://www.site.com/index.php?p=2.2.2 [L]

**************

Pour ton autre probleme, rediriger toute les pages qui ne sont sous la forme -index.php?p=x.x.x

essaye ce code


Code:
RewriteCond %{REQUEST_URI} !^/index\.php\?p=([0-9]\.*)
RewriteRule ^$ /requestUrl.php [L]
 
Nouveau WRInaute
Oui Merci ça j'ai compris, mais au lieu d'écrire une centaine de rewrite rule je voulais simplement tout url qui ne commence pas par index.php?p=x.x.x soit redirigé vers une page qui récupère l'url et qui check dans une tabe s'il y a un enregistrement.

Pour le Script qui fait le check pas de souci.

Pex: Je récupère l'url /news check dans ma table ou news est associé avec p=1.1.1 puis header location sur cette page.

Je ne sais pas si c'est clair.
 
Discussions similaires
Haut