Php 使XAMPP/Apache服务文件位于htdocs文件夹之外

Php 使XAMPP/Apache服务文件位于htdocs文件夹之外,php,apache,xampp,server-configuration,Php,Apache,Xampp,Server Configuration,是否可以配置为在htdocs目录之外提供文件 例如,假设我有一个如下所示的文件: C:\projects\transitCalculator\trunk\transitCalculator.php 我的文件通常由以下机构提供: C:\xampp\htdocs\ (因为这是默认配置)有没有办法让Apache识别并提供我的TransitCalculator.php文件,而不将其移动到htdocs下?我希望Apache能够提供/访问projects目录的全部内容,并且我不希望将projects目录移动

是否可以配置为在
htdocs
目录之外提供文件

例如,假设我有一个如下所示的文件:

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

我的文件通常由以下机构提供:

C:\xampp\htdocs\

(因为这是默认配置)有没有办法让Apache识别并提供我的
TransitCalculator.php
文件,而不将其移动到
htdocs
下?我希望Apache能够提供/访问projects目录的全部内容,并且我不希望将projects目录移动到
htdocs


编辑:编辑以将Apache添加到问题标题中,使Q/A更“可搜索”

您可以将Apache设置为在任何地方提供页面,但它通常以更安全的形式分发

编辑apache文件(http.conf是更常见的名称之一)将允许您设置任何文件夹,使其显示在webroot中

编辑:

别名myapp c:\myapp\


我已经编辑了我的答案,在http.conf文件中包含了创建别名的格式,这有点像windows中的快捷方式或un*x下的符号链接,其中Apache“假装”文件夹在webroot中。从长远来看,这可能对您更有用。

您可以通过编辑XAMPP\apache\conf\httpd.conf中的DocumentRoot设置来重新定位它

目前应该是:

C:/xampp/htdocs

将其更改为:

C:/projects/transitCalculator/trunk

好的,per’s和’s的答案看起来有三种方法可以做到这一点:


  • 打开C:\xampp\apache\conf\extra\httpd-vhosts.conf
  • 取消注释~19行(
    NameVirtualHost*:80
  • 添加虚拟主机(第36行):

    到文件的末尾(在Spybot之前-如果你已经安装了搜索和销毁工具)

  • 保存(如果使用Vista时遇到问题,可能需要将其保存到桌面,更改对旧主机文件的权限(右键单击>属性),并将新主机复制到旧主机的目录中(或重命名旧主机)
  • 重新启动Apache
  • 现在,您可以通过浏览访问该目录


  • http.conf
    文件的~200行开始,复制
    (~232行)之间的所有内容,并将其粘贴到下面的
    C:/xampp/htdocs
    中,替换为所需的目录(在本例中为
    C:/Projects
    ),以便为服务器提供新目录的正确权限

  • 找到
    部分(~300行)并添加

    (或与您的愿望相关的任何内容)位于模块标记内的
    别名
    注释块下方


  • 编辑C:\xampp\apache\conf\httpd.conf中的第176行;将
    DocumentRoot“C:/xampp/htdocs”
    更改为
    #DocumentRoot“C:/Projects”
    (或任何您想要的)

  • 编辑第203行以匹配新位置(在本例中为
    C:/Projects


  • 注意事项:

    • 必须使用正斜杠“/”而不是反斜杠“\”
    • 不要在末尾包含尾随的“/”
    • 重新启动服务器

    虚拟主机也适用于此,并且可能对您更好,因为您可以在不需要子目录的情况下托管多个项目。以下是您的操作方法:

    httpd.conf(或相对于httpd.conf的额外\httpd-vhosts.conf。后面的斜杠“\”可能会导致它无法工作):

    现在重新启动XAMPP,您应该能够访问它,它将直接映射到该目录

    如果您正在尝试复制一个生产环境,其中您正在开发一个位于域名根上的站点,那么这将非常有用。例如,您可以指向具有将传递到服务器的绝对路径的文件:

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

    而在使用别名或子目录的环境中,您需要准确跟踪“images”目录相对于当前文件的位置。

    允许Apache 2在htdocs之外托管网站的解决方案:

    在httpd.conf中的“DocumentRoot”指令下面,您应该看到一个目录块。将此目录块替换为:

    <Directory />
        Options FollowSymLinks
        AllowOverride All
        Allow from all
    </Directory> 
    
    
    选项如下符号链接
    允许超越所有
    通融
    

    记住不要在真实环境中使用此配置

    如果您试图让XAMPP将网络驱动器用作文档根目录,则必须使用httpd.conf中的UNC路径。XAMPP将无法识别映射的网络驱动器

    例如,以下内容不起作用, DocumentRoot“X:/webroot”

    但这会,,
    DocumentRoot“//192.168.10.100/webroot”(注意正斜杠,而不是反斜杠)

    不要忘记在要求DocumentRoot的两行中编辑它。如果只更改最上面的一个,将出现读取访问错误等。这也适用于XAMP mac?现在通过哪个URL可以访问索引页?在步骤(3)中编辑C:\Windows\System32\drivers\etc\hosts。首先以管理员身份运行编辑器(记事本、记事本++或任何编辑器)的最佳实践。因此,您可以直接保存到C:\Windows\System32\drivers\etc\文件夹。如果出现403个错误,请参阅使用Order allow,deny allow from all on Win7返回403个错误,因为此选项已弃用。使用需要所有授权。仅供参考,我似乎没有必要执行此步骤:使用
    Order allow取消注释行19(NameVirtualHost*:80),deny allow from all
    对我不起作用,但
    Require all approved
    有效。我的电脑上有几个网络驱动器,它们已映射到驱动器号(例如
    X:\myfolder
    )。当我使用此方法时,会收到“禁止访问”警告。这是否意味着Apache用户没有对驱动器的读取权限?在
    Dire下
    
    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
    
    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> 
    
    # localhost entries
    127.0.0.1 localhost transitcalculator.localhost
    
    <img src="/images/logo.png" alt="My Logo" />
    
    <Directory />
        Options FollowSymLinks
        AllowOverride All
        Allow from all
    </Directory>