IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

URL rewriting et URL relative


Sujet :

Apache

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut URL rewriting et URL relative
    Bonjour,
    Grâce aux tutos sur le sujet de l'URL rewriting, j'ai pu réaliser avec succès un petit projet de test avec les fichiers PHP, CSS, Javascript et images dans le même répertoire mais quand je passe au cas réel où le CSS, le Javascript et les images sont dans des dossiers séparés du PHP, j'ai un problème apparemment avec les URL relatives.

    Dans le .htaccess, j'ai défini la règle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-zA-Z-]*)\/([a-zA-Z-]*)$ /le_site/ew-general-controller.php?page=$1&params=$2 [L]
    Ce qui donne que l'URL affichée http://www.le_site.com/la_page/les-p...par-des-tirets est transformée en ew-general-controller.php?page=la_page&params=les-parametres-séparés-par-des-tirets.

    Avantage : avec une seule règle, tout passe par un seul contrôleur qui appelle la page réelle et on peut avoir autant de paramètres que l'on veut.

    Sauf que les liens HTML qui fonctionnaient avant ne fonctionnent plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <link rel="stylesheet" href="css/styles.css" type="text/css" media="screen" />
    <script type="text/javascript" src="js/jquery-1.4.3.min.js"></script>
    Résultat avec l'URL rewriting : pas de formatage CSS de la page et erreur dans un code javascript inclus qui utilise JQuery.

    J'ai réussi à faire fonctionner correctement tout ça en changeant les liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <link rel="stylesheet" href="../css/styles.css" type="text/css" media="screen" />
    <script type="text/javascript" src="../js/jquery-1.4.3.min.js"></script>
    C'est à dire que Apache semble considérer que la partie /la_page/ de l'url demandée est un sous-dossier et qu'il faut remonter ce sous-dossier fictif pour accéder aux répertoires CSS et Javascript.

    Le problème est que je reprends un site existant et qu'il y a beaucoup de liens à changer. en plus, tout ces ../, je ne trouve pas ça très beau.

    Y a t-il un moyen de dire à Apache qu'en fait il se trouve bien à la racine du site et doit considérer toutes les URL à partir de cette racine et non pas d'un sous-dossier qui n'existe pas ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    C'est à dire que Apache semble considérer que la partie /la_page/ de l'url demandée est un sous-dossier et qu'il faut remonter ce sous-dossier fictif pour accéder aux répertoires CSS et Javascript.
    Au détail près que c'est ton navigateur et pas Apache qui fait cette considération, c'est tout à fait juste.

    Citation Envoyé par CinePhil Voir le message
    Le problème est que je reprends un site existant et qu'il y a beaucoup de liens à changer. en plus, tout ces ../, je ne trouve pas ça très beau.

    Y a t-il un moyen de dire à Apache qu'en fait il se trouve bien à la racine du site et doit considérer toutes les URL à partir de cette racine et non pas d'un sous-dossier qui n'existe pas ?
    Encore une fois, c'est le navigateur qu'il faut aider. Deux options : soit tu mets des ../ ou des / (<script type="text/javascript" src="/js/jquery-1.4.3.min.js"></script>), soit tu ajoutes une balise <base href="/"> dans la section <head> de chaque page.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    soit tu ajoutes une balise <base href="/"> dans la section <head> de chaque page.
    C'est cette dernière option que j'avais trouvée et que j'ai essayée vite fait à 2h du mat' la nuit dernière mais sans succès. Je vais reprendre ça à tête reposée sur un projet test.

    Merci de ta réponse.

    EDIT :
    C'est bon.
    Il faut mettre l'URL complète en argument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <base href="http://localhost/nom_site" />
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Référencement d'URL paramétrée sans URL rewriting
    Par thomine dans le forum Référencement
    Réponses: 2
    Dernier message: 27/05/2010, 13h06
  2. [PHP 5.2] url rewrite, liens url sans id paramètre
    Par kitten13 dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2009, 11h41
  3. [URL rewriting] Les URL relatives ne passent plus
    Par Yatta dans le forum Apache
    Réponses: 1
    Dernier message: 25/10/2009, 21h44
  4. url rewriting et URL affichée
    Par Dougui_bzh dans le forum Apache
    Réponses: 8
    Dernier message: 01/10/2008, 15h31
  5. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo