Rewrite - Répertoires virtuels - Chemin relatif

Discussion dans 'URL Rewriting et .htaccess' créé par totoIlEstBo, 19 Octobre 2011.

  1. totoIlEstBo
    totoIlEstBo Nouveau WRInaute
    Inscrit:
    19 Octobre 2011
    Messages:
    2
    J'aime reçus:
    0
    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 :)
     
  2. totoIlEstBo
    totoIlEstBo Nouveau WRInaute
    Inscrit:
    19 Octobre 2011
    Messages:
    2
    J'aime reçus:
    0
    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 :)
     
  3. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    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
     
Chargement...
Similar Threads - Rewrite Répertoires virtuels Forum Date
Help rewrite: marche à la la racine mais pas dans les répertoires URL Rewriting et .htaccess 21 Mars 2014
Rewrite avec des repertoires URL Rewriting et .htaccess 7 Janvier 2009
Rewrite de répertoires et sous-répertoires URL Rewriting et .htaccess 28 Octobre 2007
Problème sur des repertoires virtuel avec le rewrite URL Rewriting et .htaccess 2 Avril 2007
Comment spécifier de ne pas rewriter certains répertoires ? URL Rewriting et .htaccess 17 Janvier 2004
Rewrite url manuel URL Rewriting et .htaccess 19 Avril 2020
RegExp du Rewrite URL Rewriting et .htaccess 19 Décembre 2019
Ne prendre qu'une partie d'un QueryString dans une regex RewriteCond URL Rewriting et .htaccess 9 Décembre 2019
Astuce RewriteMap : convertir un .dbm.pag en txt ? Débuter en référencement 8 Juillet 2019
rewriteRule sur wamp erreur 404 URL Rewriting et .htaccess 20 Avril 2019
URL Rewriting : difficultés avec RewriteCond ? URL Rewriting et .htaccess 5 Décembre 2018
Problème avec ma ligne rewrite URL Rewriting et .htaccess 20 Juin 2018
Déplacer les RewriteRule du .htaccess vers le vhost URL Rewriting et .htaccess 16 Janvier 2018
Rewrite URL comment faire Débuter en référencement 17 Septembre 2017
Rewrite repertoire virtuel -> erreur 404 suite à maj serveur URL Rewriting et .htaccess 24 Juin 2017
aide pour écriture rewritecond URL Rewriting et .htaccess 6 Avril 2017
RewriteRule avec redirection transparente URL Rewriting et .htaccess 21 Janvier 2017
Comment opter pour RewriteCond afin de rediriger plusieurs parametres dans l'url URL Rewriting et .htaccess 26 Décembre 2016
Pages profondes non redirigées (.htaccess RewriteRule) Débuter en référencement 5 Décembre 2016
RewriteRule : afficher un $_GET dans une URL réecrite Développement d'un site Web ou d'une appli mobile 12 Novembre 2016