如何运行/访问虚拟主机除默认根目录之外的不同 Web 目录?

如何运行/访问虚拟主机除默认根目录之外的不同 Web 目录?

我在 Ubuntu 20.04 中设置了虚拟主机,以便虚拟访问我的 Web 项目。我已正确遵循了必要的步骤,但由于我希望工作更具可移植性,并从外部而不是默认文档根目录访问我的 Web 项目,所以我设置了自己的媒体设备路径(/媒体/akin/7114-BB32/htdocs/)而不是默认的文档根目录(/var/www/html/)

但是当我想从浏览器访问我的域名 (htdocs.com) 时,它不起作用,我无法查看自己的索引页。它打开了另一个网页的索引。我无法确切地找到我做错或遗漏了什么。

我应该做些什么呢?

这是我的domain.conf(htdocs.conf):

<VirtualHost *:80>  
    
    ServerAdmin [email protected]
    ServerName www.htdocs.com
    ServerAlias www.htdocs.com
    DocumentRoot /media/akin/7114-BB32/htdocs
    
    <Directory /media/akin/7114-BB32/htdocs>
        Options Indexes FollowSymLinks  
        AllowOverride all
        Require all granted
    </Directory>    

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

Apache2.conf:

PidFile ${APACHE_PID_FILE}

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 5

HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf


<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    Options +MultiViews
    AllowOverride All
    Require all granted
</Directory>

<Directory /media/akin/7114-BB32/htdocs/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>


AccessFileName .htaccess


<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

还有我的文档根权限列表:

ls -la /media/akin/7114-BB32/htdocs

drwxr-xr-x  2 akin akin 8192 May 17 22:38 .
drwxr-xr-x 11 akin akin 8192 Jan  1  1970 ..
-rw-r--r--  1 akin akin 1319 May 17 22:38 index.html

答案1

由于您已FollowSymLinks启用该选项,因此最简洁的方法是将符号链接添加到您的 Web 根目录。这样,您甚至不需要弄乱apache2.conf

ln -s /media/akin/7114-BB32/htdocs /var/www/htdocs

并指向您的虚拟主机,/var/www/htdocs 同时检查 apache 是否具有所有需要的权限(IIRC 它需要“执行”权限才能打开某些东西)

编辑:在您的配置中apache2.conf我看不到您是否包括可选的(虚拟主机)配置。它应该看起来像这样IncludeOptional sites-enabled/*.conf(靠近文件的底部),所以如果您没有它,那么 apache 很可能甚至无法注册该虚拟主机。

相关内容