Назад | Перейти на главную страницу

Перенаправить трафик SSL без www на ssl с www (apache)

Я пытаюсь получить перенаправление, которое не удается, и по какой-то причине я не могу думать сегодня. У меня есть файл vHost в HTTPD, который прослушивает стандартный порт 80 и порт 443. Я пытаюсь перенаправить https://domain.com/(. *) в https://www.domain.com/$ 1, чтобы URL-адрес оставался неизменным.

Моя конфигурация выглядит следующим образом:

ServerName www.domain.com
ServerAlias ​​tempdomain.testdomain.co.uk
ServerAlias ​​domain.com

Мое правило перезаписи, которое я использую, -.

RewriteCond% {HTTP_HOST} ^ домен \ .com $
RewriteRule ^ (. *) $ https://www.domain.com1 доллар США [R = 301, L]

Я также пробовал удалить \. и $, но ничего .. Когда я посещаю URL https://domain.com/secure.page?action=comp это не перенаправляет на https://www.domain.com/secure.page?action=comp У меня также есть другие страницы SSL, приведенное выше было просто примером ..

Кто-нибудь может указать на мою глупость.

Я не вижу ничего плохого в вашем правиле перезаписи. Ты уверен :

RewriteEngine on 

был указан и этот конфиг определенно выполняется? Это в файле .htaccess?

Попробуйте настроить журнал перезаписи, он может помочь:

http://www.latenightpc.com/blog/archives/2007/09/05/a-couple-ways-to-debug-mod_rewrite

это все что тебе нужно

RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ https://www.domain.com$1 [R=permanent,L]

это правило определенно работает для меня в Apache 2.2

Помимо использования перезаписи, пожалуйста, включите HTTP Strict Transport Security. Это просто и помогает защитить посетителей от атак типа "злоумышленник посередине".

# load module (example using [RHEL])
LoadModule headers_module modules/mod_headers.so

# Use HTTP Strict Transport Security to force client to use secure connections only
Header set Strict-Transport-Security "max-age=86400"
Header append Strict-Transport-Security includeSubDomains

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Я думаю, что вам не хватает строки «RewriteEngine On» в вашей конфигурации. Вот пример того, как все это выглядит:

ServerName www.domain.com
ServerAlias tempdomain.testdomain.co.uk
ServerAlias domain.com 

RewriteEngine On
RewriteRule /.* https://www.domain.com/ [R]

Спасибо и надеюсь, что это сработает, RayQuang

Попробуйте включить RewriteLog и посмотрите, показывает ли он, в чем заключается ошибка. В твоем httpd.conf файл (или в вашем <VirtualHost> директива) добавьте следующее:

RewriteLog "/path/to/some/file.log"
RewriteLogLevel 9

НЕ ХРАНИТЕ ТАК ТАК !!!!!! RewriteLogLevel 9 является очень медленный, поэтому его не следует использовать так в продакшене, только для тестирования. Но включите это (и, конечно, перезагрузите Apache) и проверьте файл журнала, чтобы узнать, что происходит, когда вы переходите в https://domain.com/secure.page?action=comp.

Если вы все еще не уверены в проблеме, отредактируйте свой вопрос и опубликуйте соответствующие части в журнале перезаписи.