![如何运行/访问虚拟主机除默认根目录之外的不同 Web 目录?](https://linux22.com/image/766577/%E5%A6%82%E4%BD%95%E8%BF%90%E8%A1%8C%2F%E8%AE%BF%E9%97%AE%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E9%99%A4%E9%BB%98%E8%AE%A4%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B9%8B%E5%A4%96%E7%9A%84%E4%B8%8D%E5%90%8C%20Web%20%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我在 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 很可能甚至无法注册该虚拟主机。