323

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

例如,假设我有一个文件位于以下位置:

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

我的xampp文件通常来自:

C:\xampp\htdocs\

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

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

4

6 回答 6

374

好的,根据pix0rSparksDave的回答,看起来有三种方法可以做到这一点:


虚拟主机

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

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  4. 打开您的主机文件 (C:\Windows\System32\drivers\etc\hosts)。

  5. 添加

    127.0.0.1 transitcalculator.localhost #transitCalculator
    

    到文件的末尾(在 Spybot - Search & Destroy stuff 如果你已经安装之前)。

  6. 保存(您可能必须将其保存到桌面,更改旧主机文件的权限(右键单击>属性),然后将新文件复制到旧文件的目录中(或重命名旧文件),如果您正在使用Vista和有麻烦)。
  7. 重启阿帕奇。

现在您可以通过浏览http://transitcalculator.localhost/来访问该目录。


制作别名

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

  2. 找到<IfModule alias_module></IfModule>部分(~第 300 行)并添加

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
    

    (或与您的需求相关的任何内容)Alias在模块标签内的注释块下方。


更改文档根目录

  1. 在 C:\xampp\apache\conf\httpd.conf 中编辑 ~line 176; 更改DocumentRoot "C:/xampp/htdocs"#DocumentRoot "C:/Projects"(或任何您想要的)。

  2. 编辑 ~line 203 以匹配您的新位置(在本例中C:/Projects)。


笔记:

  • 您必须使用正斜杠“/”而不是反斜杠“\”。
  • 不要在末尾包含尾随的“/”。
  • 重新启动您的服务器
于 2008-08-04T17:05:48.680 回答
99

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

目前应该是:

C:/xampp/htdocs

将其更改为:

C:/projects/transitCalculator/trunk

于 2008-08-04T17:00:27.693 回答
50

VirtualHost 也适用于此,并且可能更适合您,因为您可以托管多个项目而无需子目录。这是你如何做到的:

httpd.conf(或额外的\httpd-vhosts.conf 相对于httpd.conf。斜杠“\”可能会导致它不起作用):

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> 

HOSTS 文件(通常为 c:\windows\system32\drivers\etc\hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

现在重新启动 XAMPP,您应该能够访问http://transitcalculator.localhost/,它将直接映射到该目录。

如果您尝试复制一个生产环境,在该环境中您正在开发一个位于域名根目录的站点,这会很有帮助。例如,您可以指向具有将传递到服务器的绝对路径的文件:

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

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

于 2008-08-05T15:30:30.353 回答
17

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

编辑您的 apache 文件(http.conf 是更常见的名称之一)将允许您设置任何文件夹,以便它出现在您的 webroot 中。

编辑:

别名 myapp c:\myapp\

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

于 2008-08-04T17:00:08.067 回答
11

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

例如以下将不起作用, DocumentRoot "X:/webroot"

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

于 2011-01-28T03:04:36.573 回答
9

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

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

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

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

于 2009-01-26T15:11:06.647 回答