提问人:cmcculloh 提问时间:8/5/2008 最后编辑:Communitycmcculloh 更新时间:10/23/2020 访问量:277133
使 XAMPP / Apache 服务文件位于 htdocs 文件夹之外 [已关闭]
Make XAMPP / Apache serve file outside of htdocs folder [closed]
问:
这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。
10年前关闭。
是否可以将 xampp 配置为在目录之外提供文件?htdocs
例如,假设我有一个文件,如下所示:
C:\projects\transitCalculator\trunk\TransitCalculator.php
我的 XAMPP 文件通常从以下位置提供:
C:\xampp\htdocs\
(因为这是默认配置)有没有办法让 Apache 识别并提供我的文件而不将其移动到下面?最好我希望 Apache 提供/有权访问项目目录的全部内容,并且我不想将 projects 目录移动到 .TransitCalculator.php
htdocs
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
评论
好的,根据 pix0r、Sparks 和 Dave 的答案,看起来有三种方法可以做到这一点:
虚拟主机
- 打开 C:\xampp\apache\conf\extra\httpd-vhosts.conf。
- 取消注释 ~第 19 行 ()。
NameVirtualHost *:80
添加虚拟主机(~第 36 行):
<VirtualHost *:80> DocumentRoot C:\Projects\transitCalculator\trunk ServerName transitcalculator.localhost <Directory C:\Projects\transitCalculator\trunk> Order allow,deny Allow from all </Directory> </VirtualHost>
打开主机文件 (C:\Windows\System32\drivers\etc\hosts)。
加
127.0.0.1 transitcalculator.localhost #transitCalculator
到文件的末尾(在Spybot之前 - 搜索和销毁东西,如果你已经安装了它)。
- 保存(您可能需要将其保存到桌面,更改旧主机文件的权限(右键单击>属性),然后将新主机复制到旧主机文件的目录中(或重命名旧文件),如果您使用的是 Vista 并且遇到问题)。
- 重新启动 Apache。
现在,您可以通过浏览 http://transitcalculator.localhost/ 来访问该目录。
创建别名
从文件的 ~line 200 开始,复制 和 (~line 232) 之间的所有内容,并将其粘贴到紧挨着下方,替换为您想要的目录(在本例中)以为您的服务器提供新目录的正确权限。
http.conf
<Directory "C:/xampp/htdocs">
</Directory>
C:/xampp/htdocs
C:/Projects
找到该部分(~第 300 行)并添加
<IfModule alias_module></IfModule>
Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
(或任何与您的愿望相关的内容)在注释块下方的模块标签内。
Alias
更改文档根目录
编辑 C:\xampp\apache\conf\httpd.conf 中的 ~line 176;更改为(或任何您想要的内容)。
DocumentRoot "C:/xampp/htdocs"
#DocumentRoot "C:/Projects"
编辑 ~line 203 以匹配您的新位置(在本例中为 )。
C:/Projects
笔记:
- 您必须使用正斜杠“/”而不是反斜杠“\”。
- 不要在末尾包含尾随的“/”。
- 重新启动服务器。
评论
Order allow,deny Allow from all
Require all granted
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”目录相对于当前文件的确切位置。
评论
X:\myfolder
Directory
Order allow,deny
Allow from all
Require all granted
允许 Apache 2 托管 htdocs 之外的网站的解决方案:
在 httpd.conf 的“DocumentRoot”指令下,您应该会看到一个目录块。将此目录块替换为:
<Directory />
Options FollowSymLinks
AllowOverride All
Allow from all
</Directory>
切记不要在实际环境中使用此配置
评论
如果您试图让 XAMPP 使用网络驱动器作为文档根目录,则必须在 httpd.conf 中使用 UNC 路径。XAMPP 将无法识别映射的网络驱动器。
例如,以下操作将不起作用, 文档根“X:/webroot”
但这将, DocumentRoot “//192.168.10.100/webroot”(注意正斜杠,而不是反斜杠)
评论
php -S <host>:<port>
php -S localhost:80