JeuWeb - Crée ton jeu par navigateur
[Résolu]Réécriture d'url et chemins absolus - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu]Réécriture d'url et chemins absolus (/showthread.php?tid=4395)

Pages : 1 2


RE: Réécriture d'url et chemins absolus - guile - 10-10-2009

Merci Allwise pour tes informations et ton aide.

Pour répondre à ta question : pourquoi je réécris mes URL si c'es tporu utiliser le chemin standard du fichier?
Parce qu'il y a des fichiers qui n'ont pas nécessairement besoin de réécrire l'url : les images, les css, les js... tous ces fichiers statiques.

La réécriture d'url est ici utilisée pour retranscrire des "dossiers" en paramètres de index.php, car je trouvais que www.domaine.com/sousdomaine/fr/aide pour taper vers www.domaine.com/sousdomaine/index.php?lang=fr&page=aide était pas mal visuellement.

La solution abordée est peut être inadapté au problème.
Quelque chose m'a peut être échappé dans mon .htaccess (une astuce, un flags ...?)

Je reste pour ma part un peu déçu de la réécriture d'url :
d'une URL http://www.domaine.com/sousdomaine/fr/aide, je n'obtiens dans php que deux informations :
- l'url de la requête d'origine : http://www.domaine.com/sousdomaine/fr/aide
- le chemin du script réécrit : /home/monuser/public_html/sousdomaine/index.php
Et il me manque une information capitale :
- l'url du script réécrit : http://www.domaine.com/sousdomaine/index.php


RE: Réécriture d'url et chemins absolus - Allwise - 10-10-2009

Je pense que t'as un problème d'organisation.
1° Tu fais ton site avec les tous les liens originaux, sans aucune réécriture nulle part.
2° Tu crées des règles de réécriture dans ton fichier .htaccess qui ne concernent QUE tes pages.
C'est ce que font la plupart des framework et applications qui utilisent un point d'entrée unique, un routeur qui définit les ressources nécessaires en fonction des paramètres fournis etc... Exemple :
Code :
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|txt)$ index.php
Si tu veux, plus généralement, exclure les ressources qui sont des fichiers ou des dossiers, tu rajoutes des conditions à ta règle :
Code :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
3° Tu remplaces sur ton site les liens vers tes pages par les URL rewritées.

De cette façon tu ne devrais avoir aucun problème de mélange d'url originales / réécrites.


RE: Réécriture d'url et chemins absolus - guile - 10-10-2009

Je suis tout à fait d'accord avec toi sur tout ça, néanmoins la question originale est tout autre :
Comment trouver l'URL absolue d'un script lancé via un url rewriting?
Les frameworks supposent souvent une seule manière d'entrer dans un site, et je crois que je me prends la tête avec ça depuis le début.

Merci de votre aide.

Pour moi c'est résolu : pas de solution à mon problème pas foutu :-D


RE: Réécriture d'url et chemins absolus - Allwise - 10-10-2009

Avec PHP_SELF c'est bon non ?
Citation : Le nom du fichier du script en cours d'exécution, par rapport à la racine web. Par exemple, $_SERVER['PHP_SELF'] dans le script situé à l'adresse http://www.monsite.com/test.php/foo.bar sera /test.php/foo.bar. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant. Si PHP fonctionne en ligne de commande, cette variable contient le nom du script depuis PHP 4.3.0. Dans les versions antérieures, cette variable n'était pas disponible.



RE: Réécriture d'url et chemins absolus - Findel - 10-10-2009

J'ai une solution à te proposer, mais c'est tordu... Utiliser la fonction proxy d'apache (si c'est bien le serveur http que tu utilise). Du coup, tu vas obtenir au final l'url que tu voulais dans PHP_SELF

Dans ta ligne de rewriting, utilise l'option "P" :

Code :
RewriteEngine  on
RewriteRule ^http://%{HTTP_HOST}/(.*)/(.*)/(.*)$  http://%{HTTP_HOST}%/$1/index.php?l=$2&p=$3 [P]

J'ai écrit la règle sans la tester, mais c'est juste pour monter où mettre le [P]

Quand aux images, css et autres scripts, pourquoi ne pas les acceder via des url absolues ?
du genre <img src="/images/bidule.jpg" alt="bidule" />, ca t'éviterais de te poser la question de savoir où tu es