在虚拟主机内创建别名目录

Pra*_*man 19 windows alias apache2 virtualhost wampserver

在问这个问题之前,我在这里,这里,这里,这里这里检查过.我想我的搜索能力很弱.

我使用的是WampServer版本2.2e.我有需要,我需要一个虚拟主机内的虚拟路径.让我说一下我拥有的两位主持人.

主虚拟主机(Localhost)

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/Wamp/www"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我的应用程序虚拟主机

<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>
Run Code Online (Sandbox Code Playgroud)

我的博客虚拟主机

<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>
Run Code Online (Sandbox Code Playgroud)

我现在的要求是拥有http://apps.ptrl/blog/并且http://blog.praveen-kumar.ptrl/应该是同一个目录.我想到的一件事是,移动blog文件夹内的apps文件夹,但它已连接,Git其他东西在那里,所以无法移动文件夹.

所以,我想创建的aliasVirtualHost以这种方式:

<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>
Run Code Online (Sandbox Code Playgroud)

但是当我试图访问时http://apps.ptrl/blog,我正在获取一个Error 403 Forbidden页面.

被禁止

我做对了吗?如果您需要查看访问日志和错误日志,它们在这里:

# 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/
Run Code Online (Sandbox Code Playgroud)

急切地等待一些帮助.如果需要,我准备提供更多信息.


更新#1:根据felipsmartins给出的说明更改了VirtualHosts声明:

<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>
Run Code Online (Sandbox Code Playgroud)

更新#2:另一个问题:

我可以访问该网站.物理链接现在正在运行.也就是说,我能打开http://apps.ptrl/blog/index.php,但没有http://apps.ptrl/blog/view-1.ptf,它被翻译成http://apps.ptrl/blog/index.php?page=view&id=1.有解决方案吗

fel*_*ins 26

请注意,如果要为DocumentRoot之外的目录创建别名,则可能需要明确允许访问目标目录:

<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>
Run Code Online (Sandbox Code Playgroud)

另请注意,即使在不区分大小写的文件系统上,URL路径(第一个Alias部分)也区分大小写.

另外,检查C:/Wamp/vhosts/ptrl/praveen-kumar/blog目录的权限.

参考

  • 有关更多详细信息,请参阅Apache指南,[link](http://httpd.apache.org/docs/2.2/mod/mod_alias.html) (2认同)