使 XAMPP / Apache 服务文件位于 htdocs 文件夹之外 [已关闭]

Make XAMPP / Apache serve file outside of htdocs folder [closed]

提问人:cmcculloh 提问时间:8/5/2008 最后编辑:Communitycmcculloh 更新时间:10/23/2020 访问量:277133

问:


这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。

10年前关闭。

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

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

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

我的 XAMPP 文件通常从以下位置提供:

C:\xampp\htdocs\

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

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

php apache xampp 服务器配置

评论

1赞 icedwater 6/11/2014
我认为,这些标签应该足够可搜索。
18赞 cmcculloh 11/13/2014
安德鲁·科佩尔(Andrew Koper),我同意,但在这一点上,整个堆栈交换生态圈中普遍存在的严厉的不友好程度也就不足为奇了。¯_(ツ)_/¯
0赞 Gordova 1/20/2017
Maby 题外话,但只想提示:有时可以选择将目录移动到您的“htdocs”文件夹中,例如。如果您希望能够在 localhost ;) 中打开 Google Drive 中的文件(stackoverflow.com/questions/41751330/...)
0赞 M.C. 7/25/2017
在 ubuntu 上,只需要一个符号链接。(brettclapper.wordpress.com/2012/07/06/... )
2赞 radiantshaw 9/3/2017
除了所有的答案之外,我还想补充一个。从 PHP 5.4.0 开始,您可以使用命令行移动到项目根目录并执行 .例如。php -S <host>:<port>php -S localhost:80

答:

17赞 sparkes 8/5/2008 #1

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

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

编辑:

别名 MyApp C:\MyApp\

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

102赞 Dave Ward 8/5/2008 #2

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

它目前应该是:

C:/xampp/htdocs

将其更改为:

C:/projects/transitCalculator/trunk

评论

41赞 Arcolye 12/18/2010
不要忘记在要求 DocumentRoot 的两行中编辑它。如果您只更改顶部,则会出现读取访问错误等。
2赞 angry kiwi 6/21/2011
这也适用于 XAMP mac ?
0赞 8/5/2016
现在可以通过哪个URL访问索引页?
383赞 cmcculloh 8/5/2008 #3

好的,根据 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之前 - 搜索和销毁东西,如果你已经安装了它)。

  6. 保存(您可能需要将其保存到桌面,更改旧主机文件的权限(右键单击>属性),然后将新主机复制到旧主机文件的目录中(或重命名旧文件),如果您使用的是 Vista 并且遇到问题)。
  7. 重新启动 Apache。

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


创建别名

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

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

    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


笔记:

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

评论

14赞 CallMeLaNN 12/27/2010
在步骤 (3) 中编辑 C:\Windows\System32\drivers\etc\hosts。最佳做法是首先以管理员身份运行编辑器(记事本、记事本++或任何编辑器)。因此,您可以直接保存到 C:\Windows\System32\drivers\etc\ 文件夹。
3赞 Wojciech Owczarczyk 1/20/2014
如果您收到 403 错误,请参阅此链接
25赞 hywak 5/17/2014
在 Win7 上使用 Order allow,deny Allow from all 返回 403 错误,因为此选项已弃用。使用“要求全部授予”。stackoverflow.com/questions/9110179/......
4赞 Silverback 11/8/2014
仅供参考,这一步对我来说似乎没有必要:取消注释行 19 (NameVirtualHost *:80)
4赞 Danny Beckett 3/15/2016
使用对我不起作用,但有效。Order allow,deny Allow from allRequire all granted
52赞 pix0r 8/5/2008 #4

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

httpd.conf(或相对于 httpd.conf 的 extra\httpd-vhosts.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" />

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

评论

0赞 harryg 5/20/2013
我的 PC 上有几个网络驱动器,它们已映射到驱动器号(例如 )。当我使用此方法时,我收到“禁止访问”警告。这是否意味着 Apache 用户没有对驱动器的读取访问权限?X:\myfolder
1赞 Michiel 2/3/2016
在 replace 和 下。查看 stackoverflow.com/questions/9110179/...DirectoryOrder allow,denyAllow from allRequire all granted
9赞 JasonT 1/26/2009 #5

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

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

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

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

评论

1赞 Danubian Sailor 7/18/2013
仅适用于支持符号的文件系统。没有解释为什么不应该使用此选项。
11赞 Jason 1/28/2011 #6

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

例如,以下操作将不起作用, 文档根“X:/webroot”

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

评论

0赞 Sean Kendle 5/6/2014
它与我的映射网络驱动器配合得很好。