2013-04-13 3 views
0

Я запускаю веб-сайт с использованием SSL-сертификата.htaccess Канонические имена перенаправлены

Чтобы оптимизировать мой SEO, я хотел бы перенаправить все CNames на https://example.com.

Есть 4 варианта одного и того же адреса: https: //example.com https: //www.example.com HTTP: //example.com HTTP: //www.example.com

Этот фрагмент кода работает почти:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR] 
RewriteCond %{HTTPS} =on 
RewriteRule ^.*$ https://example.com/$0 [R,L] 

Однако один из адресов не перенаправлять. Если я набираю just example.com (http://example.com), URL-адрес не перенаправляется на https://example.com.

Может ли кто-нибудь помочь мне с кодом выше, чтобы исправить это?

В ответ на ответ от Йона ниже. Я добавил фрагмент кода в существующий файл .htaccess. Поскольку я незнаком с .htaccess, мне интересно, вызывает ли код вокруг этого фрагмента цикл переадресации?

Вот файл .htaccess, включая фрагмент из ниже:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    # Installation directory 
    RewriteBase/

    # Protect application and system files from being viewed 
    RewriteRule ^(application|modules|system|tests|sql) - [F,L] 

    # Allow any files or directories that exist to be displayed directly 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # Rewrite all other URLs to index.php/URL 
    RewriteRule .* index.php?kohana_uri=$0 [L,QSA] 

    #redirect CNames to non www 
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR] 
    RewriteCond %{HTTPS} off 
    RewriteRule ^.*$ https://example.com/$0 [R,L] 

    </IfModule> 
+0

возможно дубликат [Canonical URL не перенаправлять] (http://stackoverflow.com/questions/12763432/canonical-url-not- перенаправление) –

ответ

0

HTTPS должно быть «выключено»

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^.*$ https://example.com/$0 [R,L] 

Потому что вы хотите, либо хост начинается с WWW или HTTPS выключен ,

+0

спасибо за ответ, но когда я добавил, что и отправил его на сайт, я получил сообщение об ошибке, в котором говорилось, что существует «переадресация»? –

+0

@DougFirr Не знаете, почему вы получаете слишком много перенаправлений, эти правила отлично работают для меня. Однако, глядя на ваш файл htaccess, вы захотите поместить эти правила ** перед ** остальными правилами. –

+0

Еще раз спасибо за отзыв. Пробовал переместить фрагмент в начало файла .htaccess, но тот же результат :-( Интересно, является ли это следствием конфигурации CMS. Я знаю, что в его конфигурационном файле есть строка кода для использования https или http, это предназначен для управления в задней части. Hm, может попытаться отключить его и посмотреть, что это делает –

1

Вот еще один вариант:

# http www and non-www to https non-www 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} (?:www\.)?(.*) [NC] 
RewriteRule ^(.*) https://%1/$1   [R=301,L] 

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

Я думаю, самое лучшее место для этого кода ниже RewriteBase / директивы.

Если есть цикл, он вряд ли генерируется предыдущим кодом. Может быть 2-ым правилом, и вы можете попробовать добавить условие, например:

# Add next line before the rule 
RewriteCond %{REQUEST_URI} !index\.php [NC] 
# Current rule 
RewriteRule .* index.php?kohana_uri=$0 [L,QSA] 
+0

спасибо за обратную связь, но цикл обратной связи остался. Я действительно занимался вокалом, хотя и ДУМАЮ, что у меня есть работа. Я собираюсь опубликовать новый вопрос. –

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