虚拟主机显示目录结构

Posted

技术标签:

【中文标题】虚拟主机显示目录结构【英文标题】:Virtual host shows directory structure 【发布时间】:2017-10-24 13:14:13 【问题描述】:

目标 :- 正确设置虚拟主机。

目前我正在开发 MAC 系统版本 10.10.05 os x yosemite。

我已经使用XAMPP配置了apache2、phpmysql

我已经关注all the necessary steps 配置虚拟主机。

我的文件 /private/etc/apache2/extra/httpd-vhosts.conf 会像

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
    <Directory "/Applications/XAMPP/xamppfiles/htdocs">
        Options Indexes FollowSymLinks Includes execCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName emsv2l.localhost.com
    ServerAlias emsv2l.localhost.com
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/emsv2"
    ErrorLog "/private/var/log/apache2/apple.com-error_log"
    CustomLog "/private/var/log/apache2/apple.com-access_log" common
    ServerAdmin webmaster@dev.plutustec.com
        <Directory "/Applications/XAMPP/xamppfiles/htdocs/emsv2">
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName emsv2l-backend.plutustec.com
    ServerAlias emsv2l-backend.plutustec.com
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/emsv2-backend/public“
    ErrorLog "/private/var/log/apache2/apple.com-error_log"
    CustomLog "/private/var/log/apache2/apple.com-access_log" common
    ServerAdmin webmaster@dev.plutustec.com
        <Directory "/Applications/XAMPP/xamppfiles/htdocs/emsv2-backend/public“>
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

所以,现在如果我写 http://emsv2l.localhost.com/ 将被重定向到项目而不是显示目录结构。

我的/etc/hosts 文件会是这样的

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
#127.0.0.1      localhost
#255.255.255.255        broadcasthost
#::1             localhost
#127.0.0.1      dev.local
#127.0.0.1     emsv2l-backend.plutustec.com             # emsv2-backend
#127.0.0.1     emsv2l.plutustec.com             # emsv2
#127.0.0.1      plutustec.com #localplutus site
127.0.0.1 emsv2l.localhost.com
127.0.0.1 emsv2l-backend.plutustec.com

任何帮助将不胜感激。

【问题讨论】:

你可以访问apache服务吗?您可能需要重新启动 apache。 我多次使用 XAMPP gui 重新启动 apache。 @ShashankShah 你能告诉我们你在/Applications/XAMPP/xamppfiles/htdocs/emsv2 下的文件吗?那里有index.* 文件吗? 我认为在 Apache 中,虚拟主机的顺序也很重要 + 有类似 VirtualHostName 127.0.0.1 的东西。如果您想要更合理、更简单的设置,请使用 nginx 【参考方案1】:

就我而言,

我正在使用 macOS Mojave (Apache/2.4.34)。在 /etc/apache2/httpd.conf 文件中搜索文本“IfModule dir_module”。检查 IfModule 指令/标签是否包含任何 index.php。如果没有,则在 index.html 之后添加 index.php。希望这会拯救你。

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

【讨论】:

【参考方案2】:

您是否严格按照指南配置虚拟主机? 如果是这样,您确定您配置的 Apache 是当前正在侦听端口 80 的 Apache 吗? XAMPP 应该有它自己的 Apache 内置并且它不会运行默认配置。 你的 XAMPP httpd.conf 应该包含:

# XAMPP VirtualHosts dir
Include /Applications/XAMPP/etc/extra/httpd-vhosts.conf

为了最快的解决:

cp -iv /private/etc/apache2/extra/httpd-vhosts.conf /Applications/XAMPP/etc/extra/httpd-vhosts.conf

如果要求覆盖确认,请按“y”

【讨论】:

【参考方案3】:

您需要禁用目录列表,以替换它:

<Directory "/Applications/XAMPP/xamppfiles/htdocs/emsv2">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
</Directory>

与:

<Directory "/Applications/XAMPP/xamppfiles/htdocs/emsv2">
        Options FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
</Directory>

然后重新加载 apache

更多详情请查看here

还有一件事,你的:/Applications/XAMPP/xamppfiles/htdocs/emsv2 中有 index.php 或 index.html 吗?

【讨论】:

不应要求关闭索引。它实际上可能是您想要使用的东西。但确实检查 index.* 文件 我已经在上面尝试过,但它不起作用更改文件的内容并重新启动 apache。

以上是关于虚拟主机显示目录结构的主要内容,如果未能解决你的问题,请参考以下文章

虚拟交换机(OVS)之结构印象

Linux下使用tree命令查看目录结构

Linux系统目录结构,文件类型,ls和alias命令

linux运维架构之路-linux目录结构

怎么在网页上面显示目录结构

IDEA左侧目录结构显示不出来