我向DigitalOcean问题部分提出这个问题,但没有得到答案,所以我和你们一起试试我的运气。在这里:
我知道这个问题已被问到至少一百万次,但我尝试了所有我能找到的解决方案或建议但它仍然无效。
Droplet正在使用Ubuntu 16.04,我正在尝试使用Apache2中的虚拟主机设置子域。
首先,我遵循了DigitalOcean教程How To Set Up Apache Virtual Hosts on Ubuntu 16.04。
最重要的是,我在域面板中创建了一条记录,其主机名为sub.example.com,指向我的Droplet。
我注意到当我输入sub.example.com时显示我的主域名,主域名在主域名上或在Nginx上运行。 URL栏中的URL保留在sub.example.com中 我检查了我的/ etc / hosts文件并添加了一个这样的条目(最后一个):
127.0.1.1 blog blog
127.0.0.1 localhost
123.345.554.21 www.sub.example.com sub.example.com
我的虚拟主机文件如下所示:
ServerAdmin admin@example.com
ServerName sub.example.com
ServerAlias www.sub.example.com
DocumentRoot /var/www/sub.example.com/public_html/
<Directory /var/www/sub.example.com/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我使用a2ensite命令启用该站点。我尝试使用带有.conf扩展名的命令而没有。我禁用了默认的.conf文件(000-default或类似的东西)。
我尝试在项目目录中添加.htaccess
文件,其中包含:
RewriteEngine on
# redirect to https www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)(domain\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
# redirect to http subdomain
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^((?!www).+\.sub.domain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
文档根目录的路径是正确的并且经过双重检查,即使我更改为不正确的路由,也没有任何反应。我重启了apache2服务和droplet的次数超过了我的数量。我添加了该目录的权限。 我不知道该怎么办。也许我错过了什么?是因为我的索引文件是.php文件吗?
无论如何,谢谢你的帮助!