322 votes

Faire en sorte que XAMPP / Apache serve le fichier en dehors du dossier htdocs

Est-il possible de configurer xampp pour servir un fichier en dehors du htdocs répertoire ?

Par exemple, disons que j'ai un fichier situé comme suit :

C:\projects\transitCalculator\trunk\TransitCalculator.php

et mon xampp Les fichiers sont normalement servis à partir de :

C:\xampp\htdocs\

(parce que c'est la configuration par défaut). Y a-t-il un moyen de faire en sorte qu'Apache reconnaisse et serve mon fichier TransitCalculator.php sans le déplacer sous htdocs ? De préférence, j'aimerais qu'Apache serve/accède à l'ensemble du contenu du répertoire des projets, et je ne veux pas déplacer le répertoire des projets sous le nom d'Apache. htdocs .

edit : modifié pour ajouter Apache au titre de la question afin de rendre les questions/réponses plus "consultables".

1 votes

Les balises sont censées être suffisamment consultables, je pense.

17 votes

Andrew Koper, je suis d'accord, mais ce n'est pas surprenant vu le niveau de méchanceté endémique de l'écosphère des échanges de piles à ce stade. ¯_()_/¯

0 votes

Peut-être hors sujet, mais juste un conseil : Parfois, une option est de déplacer les répertoires dans votre dossier "htdocs", par exemple si vous souhaitez être en mesure d'ouvrir des fichiers dans Google Drive en localhost ;) ( stackoverflow.com/questions/41751330/ )

374voto

cmcculloh Points 11040

Ok, par pix0r 's, Sparks et Dave Il semble qu'il y ait trois façons de procéder :


Hôtes virtuels

  1. Ouvrir C:\xampp\apache\conf\extra\httpd -vhosts.conf.

  2. Dé-commenter ~ligne 19 ( NameVirtualHost *:80 ).

  3. Ajoutez votre hôte virtuel (~ligne 36) :

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
  4. Ouvrez votre fichier hosts ( C:\Windows\System32\drivers\etc\hosts ).

  5. Ajouter

    127.0.0.1 transitcalculator.localhost #transitCalculator

    à la fin du fichier (avant l'élément Spybot - Search & Destroy si vous l'avez installé).

  6. Sauvegardez (il se peut que vous deviez l'enregistrer sur le bureau, modifier les autorisations sur l'ancien fichier hosts (clic droit > propriétés), et copier le nouveau dans le répertoire au-dessus de l'ancien (ou renommer l'ancien) si vous utilisez Vista et avez des difficultés).

  7. Redémarrez Apache.

Maintenant, vous pouvez accéder à ce répertoire en naviguant vers http://transitcalculator.localhost/ .


Créer un alias

  1. En commençant par la ligne 200 de votre http.conf copier tout ce qui se trouve entre <Directory "C:/xampp/htdocs"> y </Directory> (~ligne 232) et le coller immédiatement en dessous avec C:/xampp/htdocs remplacé par le répertoire souhaité (dans ce cas C:/Projects ) pour donner à votre serveur les permissions correctes pour le nouveau répertoire.

  2. Trouvez le <IfModule alias_module></IfModule> (~ligne 300) et ajoutez

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"

    (ou tout ce qui est pertinent pour vos désirs) sous le Alias dans le bloc de commentaires, à l'intérieur des balises du module.


Changez votre document Root

  1. Modifier ~ligne 176 dans C:\xampp\apache\conf\httpd.conf ; changement DocumentRoot "C:/xampp/htdocs" a #DocumentRoot "C:/Projects" (ou ce que vous voulez).

  2. Modifiez ~ligne 203 pour qu'elle corresponde à votre nouvel emplacement (dans ce cas-ci C:/Projects ).


Notes :

  • Vous devez utiliser les barres obliques "/" au lieu des barres obliques "\".
  • N'incluez pas le "/" à la fin.
  • redémarrez votre serveur .

14 votes

A l'étape (3) pour modifier le C:\Windows\System32\drivers\etc\hosts. La meilleure pratique consiste à exécuter l'éditeur (Notepad, Notepad++ ou tout autre éditeur) en tant qu'administrateur. Ainsi, vous pouvez enregistrer directement dans le fichier C:\Windows\System32\drivers\etc\ dossier.

0 votes

Pour une raison quelconque, il me donne "Accès interdit !", mais lorsque je modifie httpd.conf, il fonctionne bien. Une idée de la raison ?

0 votes

Ça ne redémarre pas pour moi, le seul qui fonctionne est l'approche documentroot

99voto

Dave Ward Points 36006

Vous pouvez le relocaliser en modifiant le fichier DocumentRoot dans XAMPP \apache\conf\httpd.conf.

Il devrait l'être actuellement :

C:/xampp/htdocs

Changez-le en :

C:/projects/transitCalculator/trunk

41 votes

N'oubliez pas de le modifier dans les DEUX lignes qui demandent DocumentRoot. Si vous ne modifiez que la ligne du haut, vous obtiendrez des erreurs d'accès en lecture, etc.

2 votes

Cela s'applique-t-il également à XAMP Mac ?

0 votes

Maintenant par quelle URL, on peut accéder à la page d'index ?

50voto

pix0r Points 17854

Un VirtualHost fonctionnerait également pour cela et pourrait être plus adapté pour vous, car vous pouvez héberger plusieurs projets sans avoir besoin de sous-répertoires. Voici comment procéder :

httpd.conf (ou un supplément \httpd -vhosts.conf relatif à httpd.conf. Les barres obliques de fin de ligne "\" peuvent empêcher le fonctionnement) :

NameVirtualHost *:80
# ...
<VirtualHost *:80>  
    DocumentRoot C:\projects\transitCalculator\trunk\
    ServerName transitcalculator.localhost
    <Directory C:\projects\transitCalculator\trunk\>  
        Order allow,deny  
        Allow from all  
    </Directory>
</VirtualHost> 

Le fichier HOSTS (c : \windows\system32\drivers\etc\hosts habituellement) :

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Maintenant, redémarrez XAMPP et vous devriez pouvoir accéder à http://transitcalculator.localhost/ et il se connectera directement à ce répertoire.

Cela peut être utile si vous essayez de reproduire un environnement de production dans lequel vous développez un site qui se trouvera sur la racine d'un nom de domaine. Vous pouvez, par exemple, pointer vers des fichiers avec des chemins absolus qui seront reportés sur le serveur :

<img src="/images/logo.png" alt="My Logo" />

alors que dans un environnement utilisant des alias ou des sous-répertoires, il faudrait savoir exactement où se trouve le répertoire "images" par rapport au fichier courant.

0 votes

J'ai plusieurs lecteurs réseau sur mon PC qui ont été mappés à des lettres de lecteur (par ex. X:\myfolder ). Lorsque j'utilise cette méthode, j'obtiens un avertissement "Access Forbidden". Cela signifie-t-il que l'utilisateur Apache n'a pas accès en lecture au lecteur ?

1 votes

Sous Directory remplacer Order allow,deny y Allow from all con Require all granted . Voir stackoverflow.com/questions/9110179/

17voto

sparkes Points 10192

Vous pouvez configurer Apache pour qu'il serve des pages de n'importe où sans aucune restriction, mais il est normalement distribué sous une forme plus sécurisée.

En modifiant vos fichiers apache (http.conf est l'un des noms les plus courants), vous pourrez définir n'importe quel dossier afin qu'il apparaisse dans votre racine web.

EDITAR:

alias myapp c : \myapp\

J'ai modifié ma réponse pour y inclure le format de création d'un alias dans le fichier http.conf, qui est en quelque sorte un raccourci sous Windows ou un lien symbolique sous un*x où Apache "prétend" qu'un dossier se trouve dans la racine du site. Cela vous sera probablement plus utile à long terme.

11voto

Jason Points 41

Si vous essayez de faire en sorte que XAMPP utilise un lecteur réseau comme document Root, vous devez utiliser des chemins UNC dans httpd.conf. XAMPP ne reconnaîtra pas vos lecteurs réseau mappés.

Par exemple, l'exemple suivant ne fonctionnera pas, DocumentRoot "X:/webroot"

Mais ceci le fera, DocumentRoot "//192.168.10.100/webroot" (notez les barres obliques, pas les barres obliques arrière)

0 votes

Il fonctionne bien avec mon lecteur réseau mappé.

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