将XAMPP / Apache设置为在htdocs文件夹之外提供文件 [已关闭]
将XAMPP / Apache设置为在htdocs文件夹之外提供文件 [已关闭]
是否可以配置xampp来服务于htdocs
目录之外的文件?
比如说,我有一个文件的位置如下:
C:\projects\transitCalculator\trunk\TransitCalculator.php
而我的xampp文件通常是从以下位置提供服务的:
C:\xampp\htdocs\
(因为这是默认配置)是否有一种方法可以让Apache识别并提供我的TransitCalculator.php
文件,而不必将其移动到htdocs
下面?最好是让Apache能够服务于/访问项目目录的全部内容,并且我不想将项目目录移动到htdocs
下面。
编辑:编辑标题以添加Apache,以便Q/A更容易“搜索”。
问题:如何让XAMPP / Apache在htdocs文件夹之外提供文件?
原因:通过配置VirtualHost可以实现这一目的,并且可以更好地满足需求,因为可以在不需要子目录的情况下托管多个项目。具体步骤如下:
1. 在httpd.conf文件中添加以下内容(或者在httpd.conf相对路径下的extra\httpd-vhosts.conf中添加,注意反斜杠“\”可能导致此方法无效):
NameVirtualHost *:80
# ...
DocumentRoot C:\projects\transitCalculator\trunk\
ServerName transitcalculator.localhost
Order allow,deny
Allow from all
2. 在HOSTS文件中添加以下内容(通常位于c:\windows\system32\drivers\etc\hosts):
# localhost entries 127.0.0.1 localhost transitcalculator.localhost
3. 重新启动XAMPP,然后就可以通过访问http://transitcalculator.localhost/来直接访问该目录。
解决方法:如果尝试使用此方法时出现“Access Forbidden”警告,这意味着Apache用户没有对该驱动器的读取权限。
可以在Order allow,deny
和Allow from all
替换为Require all granted
。
参考链接:http://stackoverflow.com/questions/9110179
问题的原因:用户想要让XAMPP/Apache在htdocs文件夹以外的位置提供文件服务。
解决方法:
1. 使用虚拟主机(Virtual Hosts):
- 打开C:\xampp\apache\conf\extra\httpd-vhosts.conf文件。
- 取消注释第19行(NameVirtualHost *:80)。
- 在第36行附近添加以下代码:
DocumentRoot C:\Projects\transitCalculator\trunk
ServerName transitcalculator.localhost
Order allow,deny
Allow from all
- 打开hosts文件(C:\Windows\System32\drivers\etc\hosts)。
- 在文件末尾添加以下代码:
127.0.0.1 transitcalculator.localhost #transitCalculator
- 保存并重启Apache。
现在可以通过浏览器访问该目录,网址为http://transitcalculator.localhost/。
2. 创建别名(Make an Alias):
- 在http.conf
文件的第200行左右,复制<Directory "C:/xampp/htdocs">
和</Directory>
之间的所有内容(大约232行),将其粘贴到下面一行,并将C:/xampp/htdocs
替换为所需的目录(在本例中为C:/Projects
),以便为新目录授予服务器正确的权限。
- 找到<IfModule alias_module></IfModule>
部分(大约第300行),在模块标签内的Alias
注释块下面添加以下代码:
Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
3. 更改文档根目录(Change your document root):
- 编辑C:\xampp\apache\conf\httpd.conf文件的第176行,将DocumentRoot "C:/xampp/htdocs"
改为#DocumentRoot "C:/Projects"
(或其他所需的目录)。
- 编辑第203行,以匹配新位置(在本例中为C:/Projects
)。
注意事项:
- 必须使用正斜杠“/”而不是反斜杠“\”。
- 不要在末尾包含斜杠“/”。
- 重启服务器。
以上是解决问题的方法,其中有一些用户的补充说明和一些其他用户的提示和问题。
问题:如何让XAMPP / Apache在htdocs文件夹之外提供文件服务?
XAMPP / Apache默认情况下将文件服务提供在htdocs文件夹中。但是有时候我们希望将文件服务提供在htdocs文件夹之外的其他文件夹中。下面是解决这个问题的原因和方法。
原因:
XAMPP / Apache默认情况下将文件服务提供在htdocs文件夹中,但是有时候我们希望将文件服务提供在其他文件夹中,可能是因为我们的项目文件不在htdocs文件夹中。
解决方法:
1. 打开XAMPP安装目录下的apache\conf\httpd.conf文件。
2. 找到并编辑DocumentRoot设置。默认情况下,设置为C:/xampp/htdocs。
3. 将DocumentRoot设置为你希望提供文件服务的文件夹路径,例如C:/projects/transitCalculator/trunk。
4. 注意要同时编辑两行要求DocumentRoot的地方。如果只修改顶部的一行,可能会出现读取权限错误等问题。
5. 保存并关闭httpd.conf文件。
这样,XAMPP / Apache将文件服务提供在指定的文件夹中,而不是htdocs文件夹。
以上方法适用于Windows操作系统。对于Mac操作系统的XAMPP,同样适用。
现在,可以通过访问指定URL来访问index页面。