Я работаю над сайтом Drupal, для которого клиент попросил удалить «www.». от URL. Это очень просто, и я сделал это раньше; Я просто закомментируйте предложенные строки в Drupal сгенерированного файла .htaccess следующим образом:Почему RewriteCond% {HTTPS} не возвращает правильное значение?
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule^http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
Те из вас, кто знаком с .htaccess Drupal будет знать, что переменная окружения protossl
устанавливается в верхней части файла, как так :
# Set "protossl" to "s" if we were accessed via https://. This is used later
# if you enable "www." stripping or enforcement, in order to ensure that
# you don't bounce between http and https.
RewriteRule^- [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule^- [E=protossl:s]
Это прекрасно работает в моей локальной среде, но когда я развернул переход на производственный участок, он разбился. www.mysite.com
перенаправляет на mysite.com
, как и ожидалось, но https://www.mysite.com
также перенаправляет на mysite.com
вместо https://mysite.com
. Кажется, что переменная %{HTTPS}
возвращает «выключен», даже когда она должна быть «включена».
Я могу перейти непосредственно к https://mysite.com
, и он отлично работает. Журналы доступа к сайту Apache показывают «https: //», где я ожидаю, что это так, как и все мои HTTP-запросы. Сайт работает на сервере RackSpace, используя балансировщик нагрузки (только один узел в балансировке). Сертификат SSL находится на балансировщике нагрузки RackSpace. Я попытался следующие шаги и никто из них не было никаких результатов:
- Заменить RewriteCond с
RewriteCond %{ENV:HTTPS} on [NC]
- Заменить RewriteCond с
RewriteCond %{SERVER_PORT} ^443$
- Множественные вариации и комбинации из вышеуказанных RewriteCond в
- Добавлено
$conf['https'] = TRUE;
в settings.php
Это водит моих коллег, и я с ума сошел. Может ли кто-нибудь помочь?
Если вы находитесь за прокси-сервером, попробуйте: '% {HTTP: X-Forwarded-Proto}' переменная. – anubhava
Это сделало трюк! Спасибо вам большое, сэр. – TGPrankster
Добро пожаловать, рад, что это сработало. – anubhava