使XAMPP / Apache在htdocs之外提供文件
是否可以将xampp配置为提供htdocs目录之外的文件?
例如,假设我有一个位于以下位置的文件:
C:\ projects \ transitCalculator \ trunk \ TransitCalculator.php`
而我的xampp文件通常是从以下位置提供的:
C:\ xampp \ htdocs \
(因为这是默认配置)是否有某种方法可以使Apache识别并提供我的TransitCalculator.php文件而不将其移到htdocs下?最好是我希望Apache提供/具有对projects目录的全部内容的访问权限,并且我不想将项目目录移到htdocs下。
编辑:编辑以将Apache添加到问题标题,以使问题/答案更"可搜索"
解决方案
回答
我们可以将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/来访问该目录。
进行别名
- 从http.conf文件的第200行开始,复制<Directory" C:/ xampp / htdocs">
和
</ Directory>之间的所有内容(〜232行),然后将其立即粘贴到C下: / xampp / htdocs
替换为所需的目录(在本例中为C:/ Projects),以为服务器提供对新目录的正确权限。 - 找到" <IfModule alias_module> </ IfModule>"部分(〜第300行)并添加
Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
(或者与需求相关的任何信息)在模块标签内的Alias
注释框下方。
更改文件根
- 在C:\ xampp \ apache \ conf \ httpd.conf中编辑第176行;将
DocumentRoot" C:/ xampp / htdocs"
更改为#DocumentRoot" C:/ Projects"`(或者我们想要的任何名称)。 - 编辑203行以匹配新位置(在本例中为C:/ Projects)。
笔记:
- 我们必须使用正斜杠" /"而不是反斜杠" "。
- 不要在结尾加上" /"。
- 重新启动服务器。
回答
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"目录相对于当前文件的位置。
回答
这些解决方案都不容易。
这是允许Apache 2托管htdocs之外的网站的最简单解决方案:
在httpd.conf中的" DocumentRoot"指令下,我们应该看到一个目录块。将此目录块替换为:
<Directory /> Options FollowSymLinks AllowOverride All Allow from all </Directory>
切记不要在真实环境中使用此配置