找不到虚拟主机对象
Virtual host Object not found
每次我尝试访问 https://sub.myproject.test/
时都会弹出此消息:
找不到对象!
在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。
如果您认为这是服务器错误,请联系网站管理员。
错误 404
sub.myproject.test
Apache/2.4.38 (Unix) OpenSSL/1.0.2q PHP/7.2.15 mod_perl/2.0.8-dev Perl/v5.16.3
在 httpd-vhosts.conf
我有:
<VirtualHost *:80>
DocumentRoot "/mnt/data/myproject/sub.myproject.com/public_html"
ServerName sub.myproject.test
ServerAlias www.sub.myproject.test
<Directory "/mnt/data/myproject/sub.myproject.com/public_html/">
AllowOverride All
Require local
</Directory>
</VirtualHost>
在 httpd-ssl.conf
我有:
# catalog config
<VirtualHost *:443>
DocumentRoot "/mnt/data/myproject/sub.myproject.com/public_html"
ServerName sub.myproject.test:443
ServerAlias www.sub.myproject.test:443
ErrorLog "/opt/lampp/logs/error_log"
TransferLog "/opt/lampp/logs/access_log"
SSLEngine on
SSLCertificateFile "/opt/lampp/etc/ssl.crt/server.crt"
SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/mnt/data/myproject/sub.myproject.com/public_html/">
SSLOptions +StdEnvVars +FakeBasicAuth
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Allow from all
Require all granted
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/opt/lampp/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
当然在 /mnt/data/myproject
路径中我有 sub.myproject.com
文件夹
如果你能帮我解决这个问题,我将不胜感激
你的 VirtualHost 没问题(除非你不需要在 ServerName 和 ServerAlias 指令中输入 :443),但是你永远不会告诉 Apache 默认显示哪个页面,如果不是在请求中指定。
在每个 VirtualHost 中定义 DirectoryIndex
。
例如:DirectoryIndex index.html
当请求为 https://example.com/
,因此域名后没有任何内容,Apache 将从 DocumentRoot
目录中显示 index.html。
与你的问题无关,你应该在你的配置中加入 ServerTokens Prod
和 ServerSignature Off
,你的错误消息显示了很多信息。
每次我尝试访问 https://sub.myproject.test/
时都会弹出此消息:
找不到对象! 在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。 如果您认为这是服务器错误,请联系网站管理员。 错误 404 sub.myproject.test Apache/2.4.38 (Unix) OpenSSL/1.0.2q PHP/7.2.15 mod_perl/2.0.8-dev Perl/v5.16.3
在 httpd-vhosts.conf
我有:
<VirtualHost *:80>
DocumentRoot "/mnt/data/myproject/sub.myproject.com/public_html"
ServerName sub.myproject.test
ServerAlias www.sub.myproject.test
<Directory "/mnt/data/myproject/sub.myproject.com/public_html/">
AllowOverride All
Require local
</Directory>
</VirtualHost>
在 httpd-ssl.conf
我有:
# catalog config
<VirtualHost *:443>
DocumentRoot "/mnt/data/myproject/sub.myproject.com/public_html"
ServerName sub.myproject.test:443
ServerAlias www.sub.myproject.test:443
ErrorLog "/opt/lampp/logs/error_log"
TransferLog "/opt/lampp/logs/access_log"
SSLEngine on
SSLCertificateFile "/opt/lampp/etc/ssl.crt/server.crt"
SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/mnt/data/myproject/sub.myproject.com/public_html/">
SSLOptions +StdEnvVars +FakeBasicAuth
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Allow from all
Require all granted
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/opt/lampp/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
当然在 /mnt/data/myproject
路径中我有 sub.myproject.com
文件夹
如果你能帮我解决这个问题,我将不胜感激
你的 VirtualHost 没问题(除非你不需要在 ServerName 和 ServerAlias 指令中输入 :443),但是你永远不会告诉 Apache 默认显示哪个页面,如果不是在请求中指定。
在每个 VirtualHost 中定义 DirectoryIndex
。
例如:DirectoryIndex index.html
当请求为 https://example.com/
,因此域名后没有任何内容,Apache 将从 DocumentRoot
目录中显示 index.html。
与你的问题无关,你应该在你的配置中加入 ServerTokens Prod
和 ServerSignature Off
,你的错误消息显示了很多信息。