Apache 将www重定向到裸域

Apache 将www重定向到裸域,apache,redirect,ssl,ubuntu-server,Apache,Redirect,Ssl,Ubuntu Server,我试图将我所有的网站流量重定向到我的裸体域名(在我看来看起来更干净),但在谷歌搜索时,我发现了很多不同的方法。我使用CloudFlare的免费SSL,因此我希望有一个既可以使用SSL也可以不使用SSL的解决方案(万一发生了什么情况,我禁用了SSL或其他什么),而且我更希望全局执行此操作(即不使用.htaccess文件)。如果有必要,这是Ubuntu服务器14.10上的Apache2.4.10 我找到了,但将他的代码(如下)放入我的VirtualHost指令中会出现下面的错误。Apache错误日志

我试图将我所有的网站流量重定向到我的裸体域名(在我看来看起来更干净),但在谷歌搜索时,我发现了很多不同的方法。我使用CloudFlare的免费SSL,因此我希望有一个既可以使用SSL也可以不使用SSL的解决方案(万一发生了什么情况,我禁用了SSL或其他什么),而且我更希望全局执行此操作(即不使用.htaccess文件)。如果有必要,这是Ubuntu服务器14.10上的Apache2.4.10

我找到了,但将他的代码(如下)放入我的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.

默认情况下,
重写
模块未启用

  • 启用“重写”模块:

    sudoa2enmod重写

  • 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]
    
  • 然后

    sudo service apache2 restart
    

  • 这有帮助吗?哦,天哪,我没想到要检查
    mod_rewrite
    是否已启用!总是简单的事情。您的代码现在可以从URL的开头删除
    www
    ,但它会在末尾添加两个
    /
    s:both
    https://domain.com
    https://www.domain.com
    重定向到
    https://domain.com//
    。我希望它根本不添加尾随斜杠(除非有理由添加尾随斜杠,在这种情况下我可以接受)。我试着找出其中的正则表达式,但我迷路了。