web-dev-qa-db-fra.com

Apache Rediriger vers un autre dossier, à la fois à l'intérieur et à l'extérieur de la racine du document

J'ai récemment mis en place un serveur Web/multimédia domestique et rencontre quelques difficultés avec quelques réglages. Cela fonctionne très bien pour servir des pages Web, etc., mais j'ai maintenant réorganisé la structure de la racine du document principal et le jeu est difficile à obtenir.

La structure actuelle est:

-drive
--sites
---live
----siteA
----siteB
----siteC
---dev
--media
---films
---series

Ce que j'essaie de faire, c'est de servir siteC lorsque siteA/siteC est appelé.

Par exemple, mydomain.com présentera les fichiers qui se trouvent sur le siteA, c'est très bien. SiteB et SiteC n'ont pas leurs propres domaines, etc., et je ne veux pas qu'ils soient des sous-dossiers de SiteA. Ce que j'aimerais par conséquent, c'est que mydomain.com/siteB serve le contenu de siteB et le même contenu que siteC.

J'aimerais ensuite utiliser le même principe pour le serveur de médias afin que myDomain.com/media affiche une liste de répertoires des fichiers dans le répertoire de médias.

la racine du document dans Apache est d:/sites/live. J'utilise ensuite des hôtes virtuels pour déterminer ce qui se passe. Cela convient très bien avec mydomanA.com ou myDomainB.com standard, mais pas lorsque vous essayez d'atteindre ce que j'ai mentionné ci-dessus.

C'est l'une des tentatives:

<VirtualHost *:80>
    DocumentRoot "D:/Sites/Live/siteA"
    ServerName www.mydomain.com/siteA
    <Directory "D:/Sites/Live/siteA">
        Order allow,deny
        Allow from all
        AllowOverride All
  </Directory>

Une autre tentative infructueuse utilisant des alias à la place:

<VirtualHost *:80>
    DocumentRoot "D:/Sites/Live/siteA"
    ServerName www.mydomain/siteA
    <Directory "D:/Sites/Live/siteA">
        Order allow,deny
        Allow from all
        AllowOverride All
  </Directory>

  Alias /siteA D:/sites/live/siteA
  <directory "D:/sites/live/siteA">
    Order allow,deny
    AllowOverride All
    </directory>
</VirtualHost>

Merci pour toute aide, je tire mes cheveux pendant les dernières heures pour essayer de trouver une solution.

Edité pour répondre au commentaire.

Les entrées et sorties attendues seraient les suivantes:

mydomain.com = d:/sites/live/siteA
mydomain.com/siteB = d:/sites/live/siteB
mydomain.com/siteC = d:/sites/live/siteC

et le serveur multimédia serait:

mydomain.com/media = d:/media
1
null

L'utilisateur trecht sur serverfault a posté cette réponse:


Les éléments suivants ont été testés sur Scientific Linux:

<VirtualHost *:80>
  DocumentRoot "/var/www/html/siteA"

  Alias /siteB/ "/var/www/html/siteB/"
  <Directory "/var/www/html/siteB/">
       Order allow,deny
       Allow from all
       AllowOverride All
  </Directory>

  Alias /siteC/ "/var/www/html/siteC/"
  <Directory "/var/www/html/siteC/">
       Order allow,deny
       Allow from all
       AllowOverride All
  </Directory>

  Alias /media/ "/media/"
  <Directory "/media/">
       Options  +Indexes
       Order allow,deny
       Allow from all
       AllowOverride All
   </Directory>
</VirtualHost>

et les résultats du test sont les suivants:

InputOutput
mydomain.comcontent of siteA
mydomain.com/siteA/404
mydomain.com/siteB/content of siteB
mydomain.com/siteC/content of siteC
mydomain.com/media/content of media

Remarque: l'accès au répertoire /media a entraîné l'enregistrement de Directory index forbidden by Options directive: par le journal error.log. L'ajout de Options +Indexes a résolu le problème. Cette solution a été trouvée ici .

0
null