URL Rewriting pour traitement XSL

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

Lez
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2003

URL Rewriting pour traitement XSL

Message le Ven Juin 06, 2003 14:58

J'essaye de mette en place sur mon serveur un traitement XSL généralisé à partir d'une requête sur un fichier HTML. Après avoir passé une nuit à essayer de faire marcher les différents modules Apache (murka, mod_xslt) je me suis rabattu sur l'idée de faire cela avec l'URL Rewriting...et j'y est passé une autre nuit sans succès :cry: ...

Ce que je veux mettre en place est assez simple en théorie : si une requête concerne un fichier HTML de la forme "<nom fichier>-<nombre>.html" et si ce fichier n'existe pas appeler un script php qui applique la transformation du fichier "<nom fichier>.xml" avec comme paramètre de page <nombre> par le fichier XSL "<nom de la dtd>_html.xslt".

Alors j'ai pensé à ça :
Code: Tout sélectionner
RewriteCond %{REQUEST_FILENAME} -U
RewriteRule ^.+-[0-9]+\.html$ /xslt.php [L,NS]


Mais la condition ne marche pas...j'ai testé dans tous les sens REQUEST_URI, REQUEST_FILENAME et SCRIPT_FILENAME avec -F et -U mais rien n'a faire. Le code que je viens de donner est celui qui marche le mieux.

Je vous donne le log pour le code ci-dessus avec un fichier qui n'existe pas :
Code: Tout sélectionner
[rid#2798568/initial] (2) init rewrite engine with requested uri /GIME-0.html
[rid#2798568/initial] (3) applying pattern '^.+-[0-9]+\.html$' to uri '/GIME-0.html'
[rid#279a580/subreq] (2) init rewrite engine with requested uri /GIME-0.html
[rid#279a580/subreq] (1) pass through /GIME-0.html
[rid#2798568/initial] (4) RewriteCond: input='/GIME-0.html' pattern='-U' => matched
[rid#2798568/initial] (2) rewrite /GIME-0.html -> /xslt.php
[rid#2798568/initial] (2) local path result: /xslt.php
[rid#2798568/initial] (2) prefixed with document_root to d:/web/xslt.php
[rid#2798568/initial] (1) go-ahead with d:/web/xslt.php [OK]


Pourquoi me dit-il qu'il trouve l'URI pour ce fichier inexistant : parce qu'il existe une règle de réécriture pour ce fichier ? Cela n'a pas vraiment de sens...

Aidez moi s'il vous plait, car je commence à devenir insomniaque :? . J'aurai d'autres questions par la suite mais chaque chose en son temps...

En tout cas très bon forum...

Lez
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2003

Message le Ven Juin 06, 2003 21:31

Bon, je continue mon monologue...

J'ai réussi à m'en sortir avec une bidouille :
Code: Tout sélectionner
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-F


Maintenant j'aimerais que si le fichier xml n'est pas trouvé, le script php se dirige vers la page d'erreur (et pas seulement une entête 404). Pour cela, je me suis dit que le plus simple était de repasser la requête de base à Apache et qu'il fasse le tri à partir d'une variable d'environnement entre ce qui a été traité ou non, d'où :
Code: Tout sélectionner
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-F
RewriteCond %{env:XSLT} !=true
RewriteRule ^.+-[0-9]+\.html$ /xslt.php [NS,E=XSLT:true,L]


Mais ça ne marche pas, car, je ne sais pas pourquoi, Apache enlève la définition de la variable XSLT à la requête suivante. C'est à dire que lorsque le script php appelle une page, la condition sur XLST ne marche pas car cette variable n'est plus définie... le E=XSLT ne servirait donc que pour l'appel des pages spécifiques à la règles... j'espère que non...

Quelqu'un à des idées ?


hetzeld
WRInaute passionné
WRInaute passionné
 
Messages: 2209
Inscription: 2 Déc 2002

Message le Sam Juin 07, 2003 6:56

Salut Lez, et bienvenue sur WebRankInfo !

Et tes paramètres de fichier/page... il sont où dans ta réécriture ?
Sans eux tu pourrais bien continuer ton monologue pendant longtemps :lol:
Ce que tu fais, c'est appeler xslt.php sans paramètre quel que soit le fichier demandé. :?

Essaye avec (change les noms des paramètres pour adapter à ton script):
Code: Tout sélectionner
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-F
RewriteRule  (.+)-([0-9]+)\.html$ /xslt.php?fichier=$1&page=$2  [L]

Cela réécrira test-12.html en /xslt.php?fichier=test&page=12
C'est bien ce que tu veux faire ?

Dan

Lez
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2003

Message le Sam Juin 07, 2003 17:12

Je n'ai pas besoin de paramètres, le script php les extraits tout seul à partir de REQUEST_URI, mais c'est vrai que c'est une solution qui allègerait mon script et qui me permetttrait de l'utiliser dans un autre contexte.

Mon problème concerne la portée d'une variable d'environnement définie par le flag E. On dirait qu'elle ne concerne que les requêtes dépendant du renommage. Comment faire en sorte que lorsque mon script redonne la main à Apache, cette variable existe encore ?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Analyse des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités