将www重定向到裸域

时间:2014-11-10 21:25:54

标签: apache redirect ssl ubuntu-server

我正在尝试将我的所有网站流量重定向到我的裸域(在我看来看起来更清晰),但是当谷歌搜索时,我找到了很多不同的方法来实现它。我使用CloudFlare的免费SSL,所以我想要一个既可以使用SSL也可以不使用SSL的解决方案(如果发生了什么事情,我禁用了SSL或其他),我最好全局(即没有.htaccess)文件)。如果重要,这是Ubuntu Server 14.10上的Apache 2.4.10。

我找到this article,但是将他的代码(下面)放入我的VirtualHost指令中会产生下面的错误。 Apache错误日志没有任何用处。我该怎么做才能解决这个问题,并使重定向正常工作? (如果我应该以其他方式这样做,我也会对此持开放态度;如果需要,我可以访问控制我的DNS设置。

代码已插入apache2/sites-available/000-default.conf

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

重启Apache时收到的错误代码:

 * The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 30 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.

1 个答案:

答案 0 :(得分:3)

默认情况下未启用rewrite模块。

  1. 启用重写模块:

    sudo a2enmod重写

  2. 将您的000-default.conf更改为

    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    
  3. 然后

    sudo service apache2 restart