Rewrite - Répertoires virtuels - Chemin relatif

Nouveau WRInaute
Bonjour bonjour la communauté.
Je viens vers vous car j'ai un petit souci dans la conception d'un site web.

Je me suis mis il y a peu à l'url rewriting.

Pour situer le problème voici un test très simple. (les codes des pages de test suivent)
J'ai une application php dont les adresses sont "rewritées". l'utilisateur tape par ex : monsite.com/news pour accéder à index.php?url=news. S'il tape monsite.com/news/ cela fonctionne aussi. (ou encore monsite.com/news/23)

Cependant, c'est là qu'un problème apparait.
Dans un fichier index.php je place une balise css dont le chemin est en relatif de cette manière : <link rel="stylesheet" media="all" href="style/base.css" />.
Lorsque dans l'adresse une partie est considérée comme un répertoire virtuel, le chemin relatif prend en compte ce répertoire non existant.
Donc quand on tape monsite.com/news/ au lieu d'aller chercher le css dans "monsite.com/style/base.css" il va le chercher dans monsite.com/news/style/base.css "news" étant un répertoire inexistant.

De plus, je travaille dans un répertoire du serveur et non directement à la base.
Alors si je fais : <link rel="stylesheet" media="all" href="/style/base.css" /> il le recherche à partir de la base du serveur, ne le trouvant pas.


Pour récapituler :
monsite.com/test/ => répertoire de base de l'application contenant les fichiers et dossiers :
monsite.com/test/index.php
monsite.com/test/.htaccess
monsite.com/test/style/base.css

Bien sûr je résoudrais très simplement le problème en utilisant un chemin absolu pour le css, ou en rajoutant le répertoire dans lequel on travaille dans le chemin relatif du css mais ce n'est pas une solution très maléable selon moi.
Pour finir, dans mon htaccess, je suis aussi obligé de définir le répertoire courant.
Tout çà impliquerai que lorsque je le transfère je doivent changer les lignes de codes correspondantes (impossible si trop d'include. Et comme je travaille pour des clients qui veulent juste avoir à envoyer les fichiers sur leur serveur pr que leur site s'affiche, tout çà n'est pas vraiment une bonne soluce.


Bon place aux codes (très simplifiés mais ptet que j'ai fait des erreurs dans le htaccess :

index.php
Code:
<!DOCTYPE html>
<html>
    <head>
     <link rel="stylesheet" media="all" href="/style/base.css" />
    </head>
	<body>
    
    </body>
</html>

style/base.css (juste changement de couleur histoire de voir direct si c'est pris en compte)
Code:
html {
	background: black;}

.htaccess
Code:
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ test/index.php?url=$1 [L]

Bon bein j'espère que quelqu'un pourra m'éclairer. Pour info je suis chez 1and1, un pack classique quoi... qu'un client potentiel aurait tot fait d'acheter.

Merci d'avance à vous et à très vite j'espère :)
 
Nouveau WRInaute
Bon pour l'instant gràce à un autre forum je suis arrivé à quelque chose de plus maléable :

Avec la balise <base href=""> les chemins relatifs pointent à partir de cette base définie.

<base href="monsite.com/test/" /> vu que je travaille dans un dossier "test".
(en réalité je crée une constante dans un fichier config, constante que j'affiche pour le href, dans le cadre d'une application un fichier d'installation pourrait alors créer cette constante en fonction de ce que l'admin dit)

Cependant ce que je voudrais en fait c'est faire une détection automatique du chemin réel.

On a pensé aux variables style $_SERVEUR['HTTP_HOST'], ou DOCUMENT _ROOT, mais aucune ne convient vraiment.
DOCUMENT_ROOT ne donne pas l'adresse publique de type http://...
HTTP_HOST renvoie à la racine du serveur et non du site, donc travaillant dans un dossier çà ne marche pas (monsite.com au lieu de monsite.com/test/ en gros)

Donc si quelqu'un a une idée je suis preneur :)
 
WRInaute accro
totoIlEstBo a dit:
Bien sûr je résoudrais très simplement le problème en utilisant un chemin absolu pour le css, ou en rajoutant le répertoire dans lequel on travaille dans le chemin relatif du css mais ce n'est pas une solution très malléable selon moi.
pourquoi pas malléable ? c'est pourtant ce qu'il faut faire : les références relatives sont à éviter autant que possible et, surtout dans ce cas où les css sont toujours au même endroit sur le site
 
Discussions similaires
Haut