2015-10-09 3 views
0

Мне нужно перенаправить свой веб-сайт от https://www.website.com/ до https://website.com/.WWW для URL-адресов WWW с использованием Apache (.htaccess)

SSL должным образом установлен на моем сервере.

Я использую Apache и должны сделать это с помощью Apache (либо httpd.conf/ssl.conf или .htaccess)

Я использовал почти все методы, которые я мог бы но никто не работает для меня.

http://www.website.com/ перенаправляет правильно https://website.com/

http://website.com/ правильно перенаправляет https://website.com/

Но https://www.website.com/ не перенаправлять правильно https://website.com/.

Это дает мне неправильную ошибку сертификата, и когда я добавляю исключение (принимаю сертификат) в браузер, он перенаправляется на https://website.com/. Но я не хочу добавлять это исключение (добавление сертификата в браузер)

Обратите внимание, что мой SSL-сертификат выдается на веб-сайте, а не на сайте www.website.com.

Ниже приведены мои правила и условия .htaccess

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://{REQUEST_URI} [L,R=301] 

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

Я использовал следующий тоже, но не работал ни

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !^domain.com$ [NC] 
RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301] 

Используется это так, но не повезло

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^your-site.com$ [NC] 
RewriteRule ^(.*)$ https://your-site.com/$1 [L,R=301] 

Не повезло с этим

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

Я пробовал 5-6 других (аналогично выше) решений, но никто не работал. все работы по 2 шаблонам, о которых я упоминал выше, но не работает для https://www.

Обратите внимание, что эти условия .htaccess достигнуты, я имею в виду .htaccess не игнорируется, я проверял использование перенаправления, а также вышеупомянутые 2 шаблона работают.

В httpd.conf/ssl.conf файлов, AllowOverride установлен в Все.

Я имею доступ к httpd.conf/ssl.conf.

PHP Version 5.5.29

Apache 2.4.6 (CentOS) OpenSSL/1.0.1e-ФИПС PHP/5,5.29

Hostname: Порт website.com:443

Последнее, но не менее мой сайт https://website.com/ не открывать в Internet Explorer и Safari и дать проблемы с сертификатами (ошибки), но когда я проверяю свой домен с помощью SSL шашек (несколько), то все SSL-шашки упоминают, что SSL установлен правильно.

Проверьте это изображение, это будет объяснить вещи лучше

http://i.imgur.com/lOy65rs.jpg

Полная .htaccess приводится ниже


Options +FollowSymlinks 
DirectoryIndex index.html Home.php index.php 

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*) 
RewriteRule ^.*$ https://%1/$1 [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://{REQUEST_URI} [L,R=301] 

RewriteRule ^(blogs)($|/) - [L] 
RewriteRule ^(.*)/$ index.php?mod=resturants&name=$1&%{QUERY_STRING} [L] 
RewriteRule ^$ Home.php [L] 
<IfModule mod_rewrite.c> 
RewriteCond %{REQUEST_URI} /+[^\.]+$ 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 
</IfModule> 

Пожалуйста, если кто-нибудь может помочь?

Заранее спасибо

+0

'https: // {REQUEST_URI}' <- Вам не хватает чего-то? – hjpotter92

+0

@ hjpotter92 какой предмет? Пожалуйста, расскажите подробно, я недостаточно хорош в этом. –

+0

Проверьте изображение, если это может вам помочь http://i.imgur.com/lOy65rs.jpg –

ответ

1

Пожалуйста, обратите внимание, что мой сертификат SSL выдается website.com и не www.website.com.

Это ваша основная проблема. Вы являетесь никогда сможет переадресовать из www в non www без действителен сертификат на www. Причина заключается в том, что соединение обрабатывается первым, прежде чем веб-сервер обрабатывает что-либо еще, включая любые правила перезаписи. Поэтому, когда ваш браузер подключается к вашему сайту с использованием протокола https, он должен проверить действительный сертификат, потому что это самый характер SSL, чтобы убедиться, что соединение безопасно. Затем, как только это будет сделано, Apache будет обрабатывать правила веб-сервера, которые у вас есть, как переписывание. Поэтому он не может переписываться с www на non www, пока соединение не будет выполнено правильно. Для этого вам также понадобится сертификат для www. Правила перезаписи не являются проблемой.

Этот вопрос возникает довольно часто, и вокруг него нет никакого способа. Это характер SSL/шифрования и то, как он работает.

При покупке сертификата старайтесь не покупать только доменное имя, потому что CA предоставит вам это без www. Но если вы используете www.example.com в своем CSR, вы получите как www.example.com, так и example.com в том же сертификате в 99% случаев. Тогда вам не придется беспокоиться об этой проблеме. Они глупые дешевые, поэтому не должно быть проблемой, чтобы получить еще один. У SSls.com есть их за 4.99/год.

+0

Я попросил сертификат www.website.com, но почему ** http: // www.website.com/** и ** http: // website.com/** успешно перенаправляются на ** https: // website.com **? –

+0

Спасибо :) это решило проблему –

0

Вы попробовали?

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*) 
RewriteRule ^.*$ https://%1/$1 [R=301,L] 

Generic htaccess redirect www to non-www

+0

Тот же номер (ошибка), который я объяснил в сообщении. ** Это соединение не доверено ** с https: // www, domain.com /, тогда как оно должно было быть перенаправлено на https://domain.com/ –

+0

, ваш сертификат SSL охватывает как www, так и не www, как кажется, чем его выпуск SSL не перенаправляется. –

+0

НЕТ, SSL покрывает только domain.com, а не www.domain.com, поэтому я пытаюсь перенаправить все на domain.com –

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