Version complète: sur le forum Webmaster Hub : Réécriture d'url: Tu veux une volée ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
xpatval
Bonjour, après-midi (chaude),

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

L'url normale est la suivante:
CODE
partenaires.php?im=affiche/image.jpg


Or, je tente d'écrire la règle suivante:
CODE
partenaire/affiche/image.html


Comment est-ce faisable ?

Merci,

xpatval
Dan
CODE
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
Dan
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() wink.gif

Dan
Hadrien
Yep, le path info et le multiviews, j'utilise ça à mort, je suis fan smile.gif

À 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 »
xpatval
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:
CODE
$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:
CITATION
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 ? wink.gif
xpatval
J'étais resté sur mon post premier, et n'avais pas vu que vous aviez commis d'autres réponses.

CITATION
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
Dan
CITATION(xpatval @ jeudi 26 mai 2005, 18h57)
Bon, ca y est , j'ai tout fumé !!
*

C'est ce qu'il semble wink.gif

Pourquoi tu n'utiliserais pas $PHP_SELF ? Cette variable devrait contenir le nom du programme php qui s'exécute wink.gif
xpatval
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 ?
xpatval
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...)

CODE
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
Anonymus
? $_PHPSELF

Dan parlait de la variable d'environnement : $PHP_SELF, apparemment wink.gif
xpatval
CITATION
? $_PHPSELF

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

Cela étant, pourquoi ma page ne s'affiche-t-elle pas correctement en ligne ?
Dan
CITATION(xpatval @ jeudi 26 mai 2005, 22h01)
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...)
CODE
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:
CITATION(Dan)
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
Dan
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 wink.gif

Dan
xpatval
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.gif

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 ?
Dan
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 q_smallexcla.gif

Dan

PS: ah... Nad c'était donc moi ? laugh.gif
xpatval
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.gif

xpatval
Dan
CITATION(xpatval @ vendredi 27 mai 2005, 11h16)
php tourne en cgi chez ovh ?
*

C'est vrai que la réécriture c'est "mon truc à mi" wink.gif

Oui... pour pouvoir donner à php l'identification de l'utilisateur et non celle d'Apache.
xpatval
c'est toujours bon à savoir...

Allez, merci encore; et à la prochaine question d'url-rewriting...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.