2014-11-10 3 views
1

Я пытаюсь перенаправить весь трафик своего сайта на мой голый домен (выглядит по-моему чище), но когда Googling я нашел много разных методов для этого. Я использую бесплатный SSL CloudFlare, поэтому мне бы хотелось, чтобы решение работало как с SSL, так и без него (в случае, если что-то происходит, и я отключил SSL или что-то еще), и я бы хотел сделать это глобально (т.е. без .htaccess файл). В случае, если это имеет значение, это Apache 2.4.10 на Ubuntu Server 14.10.Redirect www to naked domain

Я нашел 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

Это поможет? http://stackoverflow.com/questions/1100343/apache-redirect-from-non-www-to-www – Hozikimaru

ответ

3

rewrite модуль не включен по умолчанию.

  1. Включить модуль перезаписи:

    Судо 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 
    
+0

О, боже, я не думал проверять, включен ли 'mod_rewrite'! Всегда простые вещи. Теперь ваш код работает, чтобы удалить «www» с начала URL-адреса, но он добавляет два '/' s в конец: «https: // domain.com» и «https://www.domain.com» 'перенаправить на' https: // domain.com // '. Я бы хотел, чтобы он не добавлял конечную косую черту вообще (если нет причины добавления конечной косой черты *, в этом случае я в порядке). Я попытался выяснить, что связано с регулярным выражением, но я потерян. – vaindil

Смежные вопросы