子域重定向到主域(Apache2)

时间:2017-09-14 11:33:16

标签: php apache .htaccess ubuntu

我向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文件吗?

无论如何,谢谢你的帮助!

0 个答案:

没有答案