Aller au contenu

Réécriture d'url: Tu veux une volée ?


Sujets conseillés

Bonjour, après-midi (chaude),

Comme beaucoup, je merdoie pleinement sur une règle de réécriture:

L'url normale est la suivante:

partenaires.php?im=affiche/image.jpg

Or, je tente d'écrire la règle suivante:

partenaire/affiche/image.html

Comment est-ce faisable ?

Merci,

xpatval

Modifié par xpatval
Lien vers le commentaire
Partager sur d’autres sites

RewriteEngine On
RewriteRule partenaire/([^/]+)/(.+)\.html partenaires.php?im=$1/$2.jpg [L]

... en me basant sur le fait que les deux mots sont séparés par un /

Par contre, si tu veux que les liens dans le fichier partenaires.php (s'il y en a) fonctionnent, il faudra utiliser <base href="...">

Dan

Lien vers le commentaire
Partager sur d’autres sites

Mais si tu acceptes d'avoir un lien tel que partenaires/affiche/image (sans le .html et avec un s à partenaires) la réécriture n'est même pas nécessaire.

Tu peux dans ce cas utiliser pathinfo() ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Yep, le path info et le multiviews, j'utilise ça à mort, je suis fan :)

À mettre dans le fichier .htaccess :

Options +MultiViews

Ensuite on se sert de $_SERVER["PATH_INFO"] en PHP

Exemple :

Avec : partenaires/affiche/image

T'auras le script partenaires.php qui lira le paramètre path info « /affiche/image »

Lien vers le commentaire
Partager sur d’autres sites

Et voilà, c'est super ici.

On pose une question en réécriture d'url, dès que l'on post, un script enclenche automatiquement une alerte au sein de la cellule de crise du hub. Aussitôt, les bots de la terre entière scannent absolument partout, les BL demandent aux PR de démarrer une Danse, afin de rechercher et de trouver, où qu'il soit, quoi qu'il fasse, le FAISEUR d'URL-REWRITING, j'ai nommé un certain Nad.

Dès que celui-ci a été repéré, et toujours automatiquement, la grande Aspireuse du Hub s'envole pour un succion technologique, et afin de lui aspirer l'une de ces lignes de code que lui-seul connaît.

Une fois fait, l'Aspireuse retranscrit en temps réel le savoir de cet étrange personnage, mi-homme mi circuit imprimé, à qui l'on doit, entre autre, le WA Nad OO.

Bon, ca y est , j'ai tout fumé !!

Super, tout fonctionne comme Nad l'a dit. Par contre, cette page contient une ligne de récupération de date de mise à jour:

$maj = date("d/m/Y", filemtime(basename($_SERVER['SCRIPT_NAME'])));

Celle-ci fonctionne sans problème en local, mais plante en ligne (OVH-mutualisé)

L'erreur retournée est la suivante:

Warning: filemtime(): Stat failed for partenaires (errno=2 - No such file or directory) in /home.2/altit/www/partenaires.php

Sachant que toutes les pages du site contiennent cette ligne, et qu'elles ne retournent aucune erreur, je soupçonne qd même fortement le rewriterule d'y être pour quelque chose.

Allo l'Apireuse, un p"tit coup de succion ? ;)

Lien vers le commentaire
Partager sur d’autres sites

J'étais resté sur mon post premier, et n'avais pas vu que vous aviez commis d'autres réponses.

Mais si tu acceptes d'avoir un lien tel que partenaires/affiche/image (sans le .html et avec un s à partenaires) la réécriture n'est même pas nécessaire.

Quel est l'avantage de cette méthode ?

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Bon, ca y est , j'ai tout fumé !!

C'est ce qu'il semble ;)

Pourquoi tu n'utiliserais pas $PHP_SELF ? Cette variable devrait contenir le nom du programme php qui s'exécute ;)

Lien vers le commentaire
Partager sur d’autres sites

Disons qu'à partir d'une page partenaires.php contenant des bannières, je rends possible, ainsi, l'affichage d'images promotionnelles, en souhaitant conserver la même page, et en ayant une url plus "propre". Et ce, sans passer par un JS.

C'est vrai qu'il existe d'autres méthodes, mais j'aime bien ne pas faire tout le temps la même chose.

$_PHPSELF avec une balmise <a> ? Cela fonctionne ?

Lien vers le commentaire
Partager sur d’autres sites

Je précise qd même que l'affichage de l'image, avec la règle d'écriture, ne fonctionne pas du tout en ligne (alors qu'impeccablement en local...)

RewriteRule   ^partenaires/([^/]+)/(.+)\.html$ /partenaires.php?im=$1/$2.jpg [L]

C'est la page partenaires.php qui s'affichent (la page "appelante"), mais avec l'url décrite dans la règle.

Quelqu'un aurait-il une idée ?

Merci,

xpatval

Lien vers le commentaire
Partager sur d’autres sites

? $_PHPSELF

Oui, c'est nouveau. $PHP_SELF est passé en rééecriture... :whistling:

Cela étant, pourquoi ma page ne s'affiche-t-elle pas correctement en ligne ?

Lien vers le commentaire
Partager sur d’autres sites

Je précise qd même que l'affichage de l'image, avec la règle d'écriture, ne fonctionne pas du tout en ligne (alors qu'impeccablement en local...)

RewriteRule   ^partenaires/([^/]+)/(.+)\.html$ /partenaires.php?im=$1/$2.jpg [L]

C'est la page partenaires.php qui s'affichent (la page "appelante"), mais avec l'url décrite dans la règle.

Tu fais face au même problème que nous avons abordé dans un autre post, à savoir que php peut lancer un script même si l'extension est absente.

Enlèves le s du premier partenaires pouyr mettre la règle telle que je t'ai donnée plus haut.

Sinon tu fais comme je t'ai mentionné plus haut:

Mais si tu acceptes d'avoir un lien tel que partenaires/affiche/image (sans le .html et avec un s à partenaires) la réécriture n'est même pas nécessaire.

Tu peux dans ce cas utiliser pathinfo()

Dan

Lien vers le commentaire
Partager sur d’autres sites

Et selon l'hébergeur, il faut ou ne faut pas mettre le / devant partenaires.php?im=$1/$2.jpg

Il le faut chez OVH, il ne le faut pas chez Free ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Quand je suis bouché, je suis BOUCHé !!

J'ai lu le thread en question. Mais bien entendu, je n'ai même pas fait gaffe au partenaire sans "s" de ta ligne de réécriture... :blush:

Autant pour moi, voire au temps pour moi !!

Merci Nad, cela fonctionne dorénavant.

Par contre, question subsidiaire, pourquoi cela ne gênait en rien, en local ?

Lien vers le commentaire
Partager sur d’autres sites

Parce que ta configuration locale de Php n'est pas la même... tu tournes vraisemblablement php en module localement, et php en cgi chez l'hébergeur :!:

Dan

PS: ah... Nad c'était donc moi ? :lol:

Lien vers le commentaire
Partager sur d’autres sites

php tourne en cgi chez ovh ?

Oui, Nad ne pouvait être que toi !! Qui d'autre repond aussi souvent, et de manière idéale, aux questions de réécriture ?

Et comme Dan par-ci, Dan par là.... :whistling:

xpatval

Lien vers le commentaire
Partager sur d’autres sites

php tourne en cgi chez ovh ?

C'est vrai que la réécriture c'est "mon truc à mi" ;)

Oui... pour pouvoir donner à php l'identification de l'utilisateur et non celle d'Apache.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...