Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2011, 00h47   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 :
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 :
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 21h10   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 295
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 295
Points : 8 575
Points : 8 575
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 08h50   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 :
<base href="http://localhost/nom_site" />
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web