是否可以将xampp配置为提供htdocs目录之外的文件?
例如,假设我有一个位于以下位置的文件:
C:\projects\transitCalculator\trunk\TransitCalculator.php
我的xampp文件通常从以下位置提供:
C:\xampp\htdocs\
(因为这是默认配置)是否有某种方法可以使Apache识别并提供我的TransitCalculator.php文件而不将其移动到htdocs下? 最好是我希望Apache提供/具有对projects目录的全部内容的访问权限,并且我不想将projects目录移到htdocs下。
编辑:编辑以将Apache添加到问题标题,以使问题/答案更"可搜索"
好的,按照pix0r,Sparks和Dave的回答,看来有三种方法可以做到这一点:
虚拟主机
打开C: xampp apache conf extra httpd-vhosts.conf。
取消注释?行19(NameVirtualHost *:80)。
添加您的虚拟主机(第36行):
1 2 3 4 5 6 7 8
| <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)。
加
1
| 127.0.0.1 transitcalculator.localhost #transitCalculator |
到文件末尾(在Spybot-搜索并销毁文件之前,如果已安装)。
保存(您可能需要将其保存到桌面,更改旧主机文件的权限(右键单击>属性),然后将新文件复制到旧文件上的目录中(或重命名旧文件),如果使用的是Vista并有麻烦)。
重新启动Apache。
现在,您可以通过浏览到http://transitcalculator.localhost/来访问该目录。
进行别名
从http.conf文件的?第200行开始,复制和之间的所有内容(?第232行),然后将其粘贴到下面,并用C:/xampp/htdocs替换为所需的目录(在本例中为C:/Projects),得到您的服务器对新目录的正确权限。
找到部分(?第300行)并添加
1
| Alias /transitCalculator"C:/Projects/transitCalculator/trunk" |
(或与您的需求相关的任何内容)在模块标签内的Alias注释块下方。
更改文件根
在C: xampp apache conf httpd.conf中编辑?176行;将DocumentRoot"C:/xampp/htdocs"更改为#DocumentRoot"C:/Projects"(或您想要的任何内容)。
编辑?203行以匹配您的新位置(在本例中为C:/Projects)。
笔记:
-
您必须使用正斜杠" /"而不是反斜杠""。
-
不要在结尾加上" /"。
-
重新启动服务器。
您可以通过在XAMPP apache conf httpd.conf中编辑DocumentRoot设置来重新放置它。
当前应该是:
C:/xampp/htdocs
更改为:
C:/projects/transitCalculator/trunk
VirtualHost也可以解决这个问题,并且可以更好地为您服务,因为您可以托管多个项目而无需子目录。这是您的操作方式:
httpd.conf(或相对于httpd.conf的extra httpd-vhosts.conf。结尾的斜线""可能导致其无法正常工作):
1 2 3 4 5 6 7 8 9 10
| 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):
1 2
| # localhost entries
127.0.0.1 localhost transitcalculator.localhost |
现在重新启动XAMPP,您应该可以访问http://transitcalculator.localhost/,它将直接映射到该目录。
如果您要在生产环境中复制一个正在开发中的站点,该站点将位于域名的根目录上,则这可能会有所帮助。例如,您可以指向具有绝对路径的文件,这些文件将带入服务器:
1
| <img src="/images/logo.webp" alt="My Logo" /> |
而在使用别名或子目录的环境中,您需要准确跟踪" images"目录相对于当前文件的位置。
您可以将Apache设置为不受任何限制地从任何地方提供页面,但通常以更安全的形式分发。
编辑apache文件(http.conf是更常用的名称之一)将允许您设置任何文件夹,使其显示在您的webroot中。
编辑:
别名myapp c: myapp
我已经编辑了答案,以包括在http.conf文件中创建别名的格式,这有点像Windows中的快捷方式或un * x下的符号链接,其中Apache"假装"了一个文件夹在webroot中。从长远来看,这可能对您更有用。
如果要使XAMPP使用网络驱动器作为文档根目录,则必须在httpd.conf中使用UNC路径。 XAMPP无法识别您映射的网络驱动器。
例如,以下操作无效,
DocumentRoot" X:/ webroot"
但这会
DocumentRoot" //192.168.10.100/webroot"(注意正斜杠,而不是反斜杠)
允许Apache 2托管htdocs之外的网站的解决方案:
在httpd.conf中的" DocumentRoot"指令下,您应该看到一个目录块。将此目录块替换为:
1 2 3 4 5
| <Directory />
Options FollowSymLinks
AllowOverride All
Allow from all
</Directory> |
切记不要在真实环境中使用此配置