【问题标题】:apache on windows virtual directory config helpWindows虚拟目录配置帮助上的apache
【发布时间】:2025-12-02 06:15:01
【问题描述】:

我正在通过 Xampplite 在 Windows XP 上运行 Apache,并且可以使用帮助配置我的虚拟目录。这是我希望在我的开发盒上做的事情:

  1. 我希望我的源文件位于 xampp htdocs 目录之外
  2. 在我的本地机器上,我可以通过http://myproject 访问该项目
  3. 我本地网络上的其他人可以通过 my.ip.address/myproject 访问该项目
  4. 保持 localhost 指向 xampp 的 htdocs 文件夹,以便我可以轻松添加其他项目。

我有 1 和 2 通过编辑 windows 主机文件,并在 xampp 的 apache\conf\extra\httpd-vhosts.conf 文件中添加一个虚拟目录来工作。我不会立即明白如何在不搞砸 4 的情况下完成 3。

【问题讨论】:

    标签: windows apache configuration virtual-hosts


    【解决方案1】:

    想通了:#3 使用 Alias,而不是 VirtualHost,因此:

    Alias /myproject "C:/path/to/my/project"
    <Directory "C:/path/to/my/project">
      Options Indexes FollowSymLinks MultiViews ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
    

    【讨论】:

    • 对于任何不确定的人,这可以直接在默认站点根目录的httpd.conf 文件中的&lt;Directory "D:/XAMPP/htdocs"&gt;...stuff...&lt;/Direcory&gt; 之后进行。完美地为我工作。并且不要忘记重新启动 Apache
    【解决方案2】:

    完成您的需求清单。

    1) 制作目录:

    mkdir c:\xampp\sites\myproject

    2) 编辑 c:\windows\system32\drivers\etc\hosts 使其包含这一行:

    127.0.0.1        我的项目

    并将以下内容添加到 c:\xampp\apache\conf\extra\httpd-vhosts.conf:

      NameVirtualHost myproject:80
    
      <VirtualHost myproject:80>
      DocumentRoot c:/xampp/sites/myproject
      Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride All
      Order allow,deny
      Allow from all  
      </Directory>
    

    3) 将以下行添加到 c:\xampp\apache\conf\httpd.conf 的末尾:

      Alias /myproject/  "/xampp/sites/myproject/"
    
      <Directory "/xampp/sites/myproject">
      AllowOverride None
      Options None
      Order allow,deny
      Allow from all
      </Directory>
    

    4) 将 DocumentRoot、Directory 等留在 c:\xampp\apache\conf\httpd.conf 中单独完成此操作。作为参考,这些行将是:

      DocumentRoot "/xampp/htdocs"
    
      <Directory />
       Options FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
      </Directory>
    
      <Directory "/xampp/htdocs">
       Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride All
       Order allow,deny
       Allow from all
      </Directory>
    

    【讨论】:

      【解决方案3】:

      首先启用:LoadModule alias_module modules/mod_alias.so

      <IfModule alias_module>
        Alias /ddd "D:/prj/customer/www"
      
        <Directory "D:/prj/customer/www">
          Options Indexes FollowSymLinks Includes ExecCGI
          AllowOverride all
          Order allow,deny
          Allow from all
        </Directory>
      </IfModule>
      

      在 WAMP 2.2 上测试及其工作:http://localhost/ddd

      【讨论】:

        【解决方案4】:

        在 httpd.conf 中添加以下行,比照:

        <IfModule alias_module>
            Alias /angular-phonecat "C:/DEV/git-workspace/angular-phonecat"
        </IfModule>
        
        <Directory "C:/DEV/git-workspace/angular-phonecat">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride all
            Order allow,deny
            Allow from all
            Require all granted
        </Directory>
        

        重新启动 Apache 服务器后,这对我的 (Windows) XAMPP 安装非常有效。我必须添加“要求全部授予”,否则它与上述答案几乎相同。

        【讨论】:

          【解决方案5】:

          名称VirtualHost myproject:80
          目录>

          必须是:

          名称VirtualHost myproject:80

          问候 ;)

          【讨论】:

            【解决方案6】:

            解决了这个问题。它缺少目录标签。

            NameVirtualHost myproject:80
            <VirtualHost myproject:80>
                DocumentRoot "D:/Solution"
                <Directory "D:/Solution">
                    Options Indexes FollowSymLinks Includes ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from all
                </Directory>    
            </VirtualHost>
            

            【讨论】:

              【解决方案7】:

              以最简单的方式和更少的步骤解决问题 无需创建虚拟主机,只需更改目标目录的位置即可。

              这是我为配置所做的: 我已经通过编辑 C:/xampp/apache/conf/httpd.conf 文件来完成它 我在 httpd.conf 文件中所做的更改 之后立即添加此脚本 ScriptAlias /cgi-bin/ "C:/xampp/apache)/"

              别名 /projectXYZ "C:/pathtomyproject" 选项索引 FollowSymLinks MultiViews ExecCGI 允许覆盖所有 命令允许,拒绝 全部允许

              Pathtomyproject = 项目的完整路径

              并更改了 Document Root 的 url DocumentRoot "C:/pathtomyproject"

              现在通过停止服务器重新启动 Apache 服务器。 我已经停止了 Apache 服务器,然后再次启动了 Apache 服务器。

              来源:http://bytespedia.blogspot.com/2013/12/creating-virtual-directory-in-apache.html

              【讨论】:

              • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(而不是另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
              • 因为我无法附上图片,所以我添加了完整描述的链接。 @kleopatra
              • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
              • @Almo 我已经编辑了我的评论并添加了解决方案/链接的重要部分。