Aller au contenu

Sujets conseillés

Posté (modifié)

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
Posté

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

Posté

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

Posté

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 »

Posté

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 ? ;)

Posté

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

Posté
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 ;)

Posté

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 ?

Posté

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

Posté

? $_PHPSELF

Dan parlait de la variable d'environnement : $PHP_SELF, apparemment ;)

Posté
? $_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 ?

Posté
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

Posté

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

Posté

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 ?

Posté

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:

Posté

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

Posté
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.

Posté

c'est toujours bon à savoir...

Allez, merci encore; et à la prochaine question d'url-rewriting...

Veuillez vous connecter pour commenter

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



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