使XAMPP / Apache服务文件在htdocs之外
是否可以configurationxampp提供一个文件在htdocs
目录之外?
例如,说我有一个文件位于如下:
C:\projects\transitCalculator\trunk\TransitCalculator.php
我的xampp文件通常从以下地方提供:
C:\xampp\htdocs\
(因为这是默认的configuration)有没有办法让Apache识别和提供我的TransitCalculator.php
文件,而不必在htdocs
下移动它? 最好我希望Apache服务/有权访问项目目录的全部内容,我不想移动htdocs
下的项目目录。
编辑:编辑添加Apache的问题标题,使Q / A更“可search”
好吧,根据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 – Search&Destroy之前,如果你已经安装的话)。
- 保存(您可能必须将其保存到桌面,更改旧主机文件上的权限(右键单击>属性),然后将新文件复制到旧文件夹中(或重命名旧文件),如果您正在使用Vista和麻烦)。
- 重新启动Apache。
现在,您可以通过浏览到http://transitcalculator.localhost/来访问该目录。
打个别名
-
开始你的
http.conf
文件的第200行,复制<Directory "C:/xampp/htdocs">
和</Directory>
(http.conf
行)之间的所有内容,并用C:/xampp/htdocs
replace所需的目录(在本例中为C:/Projects
),以便为您的服务器提供新目录的正确权限。 -
find
<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
)。
笔记:
- 你必须使用正斜杠“/”而不是反斜杠“\”。
- 最后不要包含尾部的“/”。
- 重启你的服务器 。
您可以通过编辑XAMPP \ apache \ conf \ httpd.conf中的DocumentRoot设置来重定位它。
目前应该是:
C:/ XAMPP / htdocs中
将其更改为:
C:/项目/ transitCalculator /行李箱
一个虚拟主机也可以为此工作,并可能为您更好地工作,因为您可以主持几个项目,而不需要子目录。 以下是你如何做到这一点:
httpd.conf(或者是相对于httpd.conf的\ 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/ ,它将直接映射到该目录。
如果您正在尝试复制生产环境,而您正在开发一个位于域名根目录的网站,则这会很有帮助。 例如,您可以指向带有绝对path的文件,这些文件将传递给服务器:
<img src="http://img.dovov.comlogo.png" alt="My Logo" />
而在使用别名或子目录的环境中,您需要确切地跟踪“images”目录相对于当前文件的位置。
您可以将Apache设置为在任何地方提供任何限制的页面,但通常以更安全的forms分发。
编辑你的apache文件(http.conf是一个比较常用的名称)将允许你设置任何文件夹,使它出现在你的webroot中。
编辑:
别名myapp c:\ myapp \
我已经编辑了我的答案,包括在http.conf文件中创build别名的格式,这有点像Windows中的快捷方式或un * x下的符号链接,其中Apache“假装”文件夹位于webroot中。 从长远来看,这可能会对你更有用。
另外,如果你想让XAMPP使用networking驱动器作为你的文档根目录,你必须在httpd.conf中使用UNCpath。 XAMPP将无法识别您映射的networking驱动器。
例如以下将不起作用,DocumentRoot“X:/ webroot”
但是,这将是DocumentRoot“//192.168.10.100/webroot”(注意正斜杠,而不是反斜杠)
这些解决scheme都不能轻松工作。 下面是允许Apache 2托pipehtdocs之外网站的最简单的解决scheme:
在httpd.conf中的“DocumentRoot”指令下,你应该看到一个目录块。 将此目录块replace为:
<Directory /> Options FollowSymLinks AllowOverride All Allow from all </Directory>
切记不要在实际环境中使用此configuration