6 votes

Utilisation de .htaccess pour définir un sous-répertoire comme répertoire racine

Existe-t-il un moyen d'utiliser htaccess pour indiquer à un sous-répertoire d'agir en tant que racine pour l'ensemble du site ?

Par exemple, si j'avais un site web sous http://localhost/testsite/ et dans son fichier index.php j'avais une référence à la feuille de style en utilisant le code suivant

<link rel="stylesheet" type="text/css" href="stackoverflow.com/css/layout.css" />

Pourrais-je alors faire en sorte que cela charge /localhost/testsite/css/layout.css ?

Pour contourner ce problème, j'ai mis en place des sous-domaines localhost pour chaque site, ce qui, bien que fonctionnant, n'est pas idéal.

Merci beaucoup.

21voto

huelbois Points 1993

Si vous voulez conserver la partie "href="http://stackoverflow.com/css/layout.css"", alors oui, vous pouvez mettre en place une règle de réécriture. Vous devez juste faire attention à ne pas rediriger tout ce qui commence par /testsite (ou vous vous retrouverez avec une boucle).

Comme (dans Root .htaccess) :

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/testsite/.*$
RewriteRule ^(.*)$ /testsite/$1 [QSA,L]

Là, vous pourrez accéder à votre fichier layout.css soit à partir de :

http://localhost/testsite/css/layout.css

ou

http://localhost/css/layout.css

4voto

hakre Points 102271

Bien sûr, tous les URI relatifs (comme le vôtre) sont relatifs à l'URI de base qui, par défaut, est l'URI du document :

http://localhost/testsite/index.php

Vous devez seulement indiquer la partie à ajouter :

<link rel="stylesheet" type="text/css" href="./css/layout.css" />
                                             ^
                                             ` see this dot

Exemple :

Base URI      ::  http://localhost/testsite/index.php
Relative URI  ::  ./css/layout.css
Result        ::  http://localhost/testsite/css/layout.css

Si vous avez besoin d'une plus grande modularité, il existe de multiples façons de le faire. La première consiste à définir l'URI de base de manière explicite dans le document HTML (cf. <base> ).

Une autre consiste à résoudre les liens de manière relative du côté du serveur en se basant sur l'élément Demande URI et le chemin racine de votre site. Voir cette réponse pour un exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X