情况如下
我有example.com
指向我的服务器的域名Apache2运行。目前我有两个conf(一个用于HTTP,一个用于HTTPS),它们接受example.com请求并显示存储在文件夹中的页面/var/ww/html/example
HTTP 会议(example.com.conf
)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/example
ServerName example.com
ServerAlias www.example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
Redirect permanent / https://example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
HTTPS conf 是基本conf 生成,certbot
没有变化
但我现在想要实现的是让子域名demo.example.com
简单地指向根 html 文件夹/var/www/html/
(所以如果我输入demo.example.com/some-folder
就会显示该文件夹的内容)
所以我尝试了这个
HTTP 会议(exampledemo.com.conf
)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName demo.example.com
ServerAlias www.demo.example.com
ErrorLog logs/demo.example.com-error_log
CustomLog logs/demo.example.com-access_log common
Redirect permanent / https://demo.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =demo.example.com [OR]
RewriteCond %{SERVER_NAME} =www.demo.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
HTTPS conf 是基本conf 生成,certbot
没有变化
但是当我添加站点并重新启动 apache 时,我找不到页面我在服务器上将其作为后备配置,因此此配置可能与我的配置不匹配
HTTP 会议(000-default.conf
)
<VirtualHost *:80>
DocumentRoot /var/www/html/not-found
</VirtualHost>
谁能告诉我我做错了什么?
答案1
您的配置似乎与000-default.conf
提供该"not found"
页面的默认配置相冲突。
- 禁用默认配置:
sudo a2dissite 000-default.conf
- 检查 DNS 设置:
nslookup demo.example.com
- 检查 Apache 配置:
确保您的新配置文件exampledemo.com.conf
位于正确的目录中/etc/apache2/sites-available/
并且具有正确的权限。
您还可以检查 Apache 错误日志以查找与配置相关的任何错误。错误日志通常位于/var/log/apache2/error.log
。
然后重新启动Apache:
sudo systemctl restart apache2