php -在htdocs之外生成XAMPP/Apache服务文件

Translate

是否可以配置Xampp在外部提供文件htdocs目录?

例如,假设我有一个位于以下位置的文件:

C:\projects\transitCalculator\trunk\TransitCalculator.php

和我的Xampp文件通常通过以下方式提供:

C:\xampp\htdocs\

(因为这是默认配置)是否有某种方法可以使Apache识别并服务我的TransitCalculator.php文件而不在其下移动htdocs?最好是我希望Apache提供/具有对项目目录的全部内容的访问权,并且我不想将项目目录移至htdocs.

编辑:编辑以将Apache添加到问题标题,以使问题/答案更“可搜索”

This question and all comments follow the "Attribution Required."

所有的回答

Translate

好吧,每个pix0r的,火花戴夫的答案似乎可以通过以下三种方法完成:


虚拟主机

  1. 打开C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf。
  2. 取消注释〜行19(NameVirtualHost *:80).
  3. 添加您的虚拟主机(第36行):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  4. 打开您的主机文件(C:\ Windows \ System32 \ drivers \ etc \ hosts)。

  5. 127.0.0.1 transitcalculator.localhost #transitCalculator
    

    到文件末尾(在Spybot-搜索并销毁文件之前,如果已安装)。

  6. 保存(您可能需要将其保存到桌面,更改旧主机文件的权限(右键单击>属性),然后将新文件复制到旧文件的目录中(或重命名旧文件)(如果使用) Vista并有麻烦)。
  7. 重新启动Apache。

现在,您可以通过浏览到该目录来访问该目录http://transitcalculator.localhost/.


进行别名

  1. 从您的〜行200开始http.conf文件之间复制所有内容<Directory "C:/xampp/htdocs"></Directory>(〜第232行),然后使用C:/xampp/htdocs替换为所需的目录(在这种情况下,C:/Projects)为您的服务器授予新目录的正确权限。

  2. 找出<IfModule alias_module></IfModule>部分(〜300行)并添加

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
    

    (或与您的需求相关的任何事物)Alias模块标签内的注释块。


更改文件根

  1. 在C:\ xampp \ apache \ conf \ httpd.conf中编辑第176行;更改DocumentRoot "C:/xampp/htdocs"#DocumentRoot "C:/Projects"(或任何您想要的)。

  2. 编辑〜203行以匹配您的新位置(在这种情况下,C:/Projects).


笔记:

  • 您必须使用正斜杠“ /”而不是反斜杠“ \”。
  • 不要在结尾加上“ /”。
  • 重新启动服务器.
来源
Translate

您可以通过编辑文档根在XAMPP \ apache \ conf \ httpd.conf中设置。

当前应该是:

C:/ xampp / htdocs

更改为:

C:/项目/ transitCalculator / trunk

来源
Translate

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”目录相对于当前文件的位置。

来源
Translate

您可以将Apache设置为不受任何限制地从任何地方提供页面,但是通常以更安全的形式分发。

编辑apache文件(http.conf是更常用的名称之一)将允许您设置任何文件夹,使其显示在您的webroot中。

编辑:

别名myapp c:\ myapp \

我已经编辑了答案,以包括在http.conf文件中创建别名的格式,这有点像Windows中的快捷方式或un * x下的符号链接,其中Apache“假装”了一个文件夹在webroot中。从长远来看,这可能对您更有用。

来源
Translate

如果要使XAMPP将网络驱动器用作文档根目录,则必须在httpd.conf中使用UNC路径。 XAMPP无法识别您映射的网络驱动器。

例如,以下操作将不起作用,DocumentRoot“ X:/ webroot”

但是,这将是DocumentRoot“ //192.168.10.100/webroot”(注意正斜杠,而不是反斜杠)

来源
Hyman Lee
Translate

允许Apache 2托管htdocs之外的网站的解决方案:

在httpd.conf中的“ DocumentRoot”指令下,您应该看到一个目录块。将此目录块替换为:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

切记不要在真实环境中使用此配置

来源