2009-02-20 3 views
5

У меня есть сертификат SSL для субдомена «www» на веб-сайте, на который мы позвоним example.com.Принудительный субдомен SSL и www для любого URI, введенного с .htaccess?

Поэтому я могу заставить SSL, но если пользователь не вводит «www.example.com» в свой браузер, сертификат SSL окажется недействительным.

Я хочу выполнить это с помощью правил mod_rewrite в файле .htaccess в корневом каталоге веб-сайта.

Независимо от того, что URI пользователь вводит, (например, example.com, www.example.com, https://example.com, example.com/folder/file.html и т.д.), я не хочу, чтобы заставить HTTPS и в www субдомен, независимо от того, какой URI они предоставили.

Я играл с файлом .htaccess и некоторыми правилами, так как я уже провел некоторое исследование, но у меня нет большого опыта работы с mod_rewrite или .htaccess. Думаю, я нашел версию SVN, что почти работал для меня, но не совсем. Вот он:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
RewriteCond %{HTTP_HOST} ^example.com [nc] 
RewriteRule ^(.*)$ https://www.example.com/$1 [r=301,nc] 

Постарайтесь не слишком усмехаться в моем файле; это в основном происходит из примеров, которые я нашел в Интернете.

Любые указатели оцениваются! =)

+0

http://no-www.com/ – ceejayoz

+0

также: использовать example.com, например, домены (фиксированная это для вас) –

ответ

3

Попробуйте это:

RewriteCond %{HTTPS} !on [OR] 
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteRule^https://www.example.com%{REQUEST_URI} [R=301] 
+0

Измененный оригинал (который был% {HTTP_HOST} в строке RewriteRule, которая, как я вижу, вы уже исправили), отлично работает: RewriteRule^https: //www.example.com% {REQUEST_URI} [R = 301] – Alex