在Htdocs之外创建XAMPP/Apache服务文件

cmc*_*loh 295 php apache xampp server-configuration

是否可以配置xampp来提供htdocs目录之外的文件?

例如,假设我有一个文件如下:

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

我的xampp文件通常来自:

C:\xampp\htdocs\

(因为那是默认配置)有没有办法让Apache识别并提供我的TransitCalculator.php文件而不移动它htdocs?我希望Apache能够提供/访问项目目录的全部内容,而且我不想移动项目目录htdocs.

编辑:编辑将Apache添加到问题标题,使Q/A更"可搜索"

cmc*_*loh 353

好吧,根据pix0r,SparksDave的回答看起来有三种方法可以做到这一点:


虚拟主机

  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>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 打开主机文件(C:\ Windows\System32\drivers\etc\hosts).

  5. 127.0.0.1 transitcalculator.localhost #transitCalculator
    
    Run Code Online (Sandbox Code Playgroud)

    到文件的末尾(在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"
    
    Run Code Online (Sandbox Code Playgroud)

    (或与您的愿望相关的任何内容)在Alias注释块下方,模块标签内.


更改文档根目录

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

  2. 编辑〜第203行以匹配您的新位置(在本例中C:/Projects).


笔记:

  • 你必须使用正斜杠"/"而不是反斜杠"\".
  • 不要在末尾包含尾部"/".
  • 重启你的服务器.

  • 使用Order allow,拒绝Win7上的所有允许返回403 ERROR,因为不推荐使用此选项.使用要求全部授予.http://stackoverflow.com/questions/9110179/adding-virtualhost-fails-access-forbidden-error-403-xampp-windows-7 (20认同)
  • 在步骤(3)上编辑C:\ Windows\System32\drivers\etc\hosts.以管理员身份运行编辑器(记事本,记事本++或任何编辑器)的最佳实践.因此,您可以直接保存到C:\ Windows\System32\drivers\etc \文件夹. (12认同)
  • 仅供参考,这一步对我来说似乎没有必要:取消评论第19行(NameVirtualHost*:80) (4认同)
  • 使用“Order allow,deny Allow from all”对我不起作用,但“要求所有授予”有效。 (4认同)
  • 如果您收到403错误,请参阅[此链接](http://stackoverflow.com/questions/19445686/ubuntu-server-apache-2-4-6-client-denied-by-server-configuration-php-fpm) (3认同)

Dav*_*ard 94

您可以通过编辑XAMPP\apache\conf\httpd.conf中的DocumentRoot设置来重定位它.

它目前应该是:

C:/ XAMPP/htdocs中

将其更改为:

C:/项目/ transitCalculator /行李箱

  • 不要忘记在要求DocumentRoot的两行中编辑它.如果您只更改顶部,则会出现读取错误等. (39认同)
  • 这也适用于XAMP mac? (2认同)

pix*_*x0r 49

VirtualHost也可以为此工作,并且可以更好地为您工作,因为您可以托管多个项目而无需子目录.这是你如何做到的:

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> 
Run Code Online (Sandbox Code Playgroud)

HOSTS文件(通常是c:\ windows\system32\drivers\etc\hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost
Run Code Online (Sandbox Code Playgroud)

现在重新启动XAMPP,您应该能够访问http://transitcalculator.localhost/,它将直接映射到该目录.

如果您尝试复制正在开发将位于域名根目录的网站的生产环境,这可能会有所帮助.例如,您可以指向具有绝对路径的文件,这些路径将转移到服务器:

<img src="/images/logo.png" alt="My Logo" />
Run Code Online (Sandbox Code Playgroud)

而在使用别名或子目录的环境中,您需要跟踪"images"目录相对于当前文件的确切位置.


spa*_*kes 15

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

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

编辑:

别名myapp c:\ myapp \

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


小智 9

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

例如,以下内容不起作用,DocumentRoot"X:/ webroot"

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


小智 5

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

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

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 
Run Code Online (Sandbox Code Playgroud)

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