web-dev-qa-db-fra.com

Créer un répertoire d'alias dans un hôte virtuel

J'ai vérifié ici , ici , ici , ici , et - ici avant de poser cette question. Je suppose que mes compétences en recherche sont faibles.

J'utilise WampServer version 2.2e. J'ai un besoin comme, j'ai besoin d'un chemin virtuel à l'intérieur d'un hôte virtuel. Permettez-moi de dire les deux hôtes que j'ai.

Hôte virtuel principal (Localhost)

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/Wamp/www"
</VirtualHost>

Hôtes virtuels de mes applications

<VirtualHost *:80>
    ServerName apps.ptrl
    DocumentRoot "C:/Wamp/vhosts/ptrl/apps"
    ErrorLog "logs/apps-ptrl-error.log"
    CustomLog "logs/apps-ptrl-access.log" common
    <Directory "C:/Wamp/vhosts/ptrl/apps">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
    DirectoryIndex index.html index.htm index.php
</VirtualHost>

Mon Blog Virtual Host

<VirtualHost *:80>
    ServerName blog.praveen-kumar.ptrl
    DocumentRoot "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"
    ErrorLog "logs/praveen-kumar-ptrl-error.log"
    CustomLog "logs/praveen-kumar-ptrl-access.log" common
    <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
    DirectoryIndex index.html index.htm index.php
</VirtualHost>

Mon exigence est maintenant d'avoir http://apps.ptrl/blog/ et http://blog.praveen-kumar.ptrl/ devrait être le même répertoire. Une chose à laquelle j'ai pensé est de déplacer le dossier blog à l'intérieur du dossier apps, mais il est connecté avec Git et d'autres éléments sont là, donc il n'est pas possible de déplacer le dossier.

J'ai donc pensé à créer un alias au VirtualHost de cette façon:

<VirtualHost *:80>
    ServerName apps.ptrl
    DocumentRoot "C:/Wamp/vhosts/ptrl/apps"
    ErrorLog "logs/apps-ptrl-error.log"
    CustomLog "logs/apps-ptrl-access.log" common
    <Directory "C:/Wamp/vhosts/ptrl/apps">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
    DirectoryIndex index.html index.htm index.php

    # The alias to the blog!
    Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"
    <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
</VirtualHost>

Mais quand j'ai essayé d'accéder à http://apps.ptrl/blog, Je reçois un Error 403 Forbidden page.

Forbidden

Suis-je en train de faire la bonne chose? Si vous devez consulter le journal d'accès et le journal des erreurs, ils sont ici:

# Access Log
127.0.0.1 - - [14/Oct/2012:09:53:11 +0530] "GET /blog HTTP/1.1" 403 206
127.0.0.1 - - [14/Oct/2012:09:53:11 +0530] "GET /favicon.ico HTTP/1.1" 404 209
127.0.0.1 - - [14/Oct/2012:09:53:53 +0530] "GET / HTTP/1.1" 200 6935
127.0.0.1 - - [14/Oct/2012:09:53:53 +0530] "GET /app/blog/thumb.png HTTP/1.1" 404 216
# Error Log
[Sun Oct 14 09:53:11 2012] [error] [client 127.0.0.1] client denied by server configuration: C:/Wamp/vhosts/ptrl/praveen-kumar/blog
[Sun Oct 14 09:53:11 2012] [error] [client 127.0.0.1] File does not exist: C:/Wamp/vhosts/ptrl/apps/favicon.ico
[Sun Oct 14 09:53:53 2012] [error] [client 127.0.0.1] File does not exist: C:/Wamp/vhosts/ptrl/apps/app/blog, referer: http://apps.ptrl/

Attendant avec impatience de l'aide. Je suis prêt à fournir plus d'informations, si nécessaire.


Mise à jour # 1: Déclaration VirtualHosts modifiée selon les instructions données par felipsmartins :

<VirtualHost *:80>
    ServerName apps.ptrl
    DocumentRoot "C:/Wamp/vhosts/ptrl/apps"
    ErrorLog "logs/apps-ptrl-error.log"
    CustomLog "logs/apps-ptrl-access.log" common
    # The alias to the blog!
    Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"
    <Directory "C:/Wamp/vhosts/ptrl/praveen-kumar/blog">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
    <Directory "C:/Wamp/vhosts/ptrl/apps">
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
    DirectoryIndex index.html index.htm index.php
</VirtualHost>

Mise à jour # 2: un autre problème:

Je peux accéder au site. Les liens physiques fonctionnent maintenant. c'est-à-dire que je peux ouvrir http://apps.ptrl/blog/index.php mais non http://apps.ptrl/blog/view-1.ptf, qui est traduit en http://apps.ptrl/blog/index.php?page=view&id=1. Des solutions?

Remarque, si vous créez un Alias dans un répertoire en dehors de votre DocumentRoot , vous devrez peut-être autoriser explicitement l'accès au répertoire cible:

<VirtualHost *:80>
    ServerName apps.ptrl
    DocumentRoot "C:/Wamp/vhosts/ptrl/apps"
    ErrorLog "logs/apps-ptrl-error.log"
    CustomLog "logs/apps-ptrl-access.log" common

    # Puts here, before Directory directive :) 
    Alias /blog "C:/Wamp/vhosts/ptrl/praveen-kumar/blog"

    <Directory "C:/Wamp/vhosts/ptrl/apps">        
        allow from all
        order allow,deny
        AllowOverride All
    </Directory>
</VirtualHost>

Notez également que le chemin URL (première partie de l'alias) est sensible à la casse même sur les systèmes de fichiers qui ne respectent pas la casse.

Vérifiez également les autorisations de C:/Wamp/vhosts/ptrl/praveen-kumar/blog répertoire.

Référence

24
felipsmartins