我正在尝试将我的所有网站流量重定向到我的裸域(在我看来看起来更清晰),但是当谷歌搜索时,我找到了很多不同的方法来实现它。我使用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.
答案 0 :(得分:3)
默认情况下未启用rewrite
模块。
启用重写模块:
sudo a2enmod重写
将您的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