2016-11-01 2 views
1

Я пытаюсь сделать любой запрос, который приходит на мой сайт laravel для перенаправления на https://www. потому что Google Analytics жалуется. После того, как много googling и resaaching мой .htaccess файл выглядит следующим образом. (Мой сайт работает на AWS EC2 за упругую балансировкой нагрузки)apache2 перенаправление на https: // www

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
    Options -MultiViews 
</IfModule> 

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker 
RewriteCond %{REQUEST_SCHEME} http [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule^https://www.example.com%{REQUEST_URI} [NE,L,R] 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

# Handle Authorization Header 
RewriteCond %{HTTP:Authorization} . 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 


</IfModule> 

Когда я сохранить новый файл .htaccess и перезапустить Apache, я получаю 504 ошибки в Chrome говорит, что сайт www.example.com перенаправлены вы слишком много раз. Попробуйте удалить файлы cookie.

Когда я удаляю свои файлы cookie или я посещаю example.com из инкогнито, он отлично работает! Но как я могу заставить пользователей удалять свои предыдущие файлы cookie, чтобы у них не было слишком много перенаправления?

Благодаря

+0

Вы используете Laravel может быть, это поможет, пожалуйста, проверьте этот https://coderwall.com/p/3etfgw/deleting-cookies-in-laravel –

+0

Привет Хоакин спасибо за ваш комментарий. Я пробовал это, но запрос не дошел до приложения, он переходит в бесконечный цикл запроса, поэтому ошибка в браузере – ggeo

+0

Да, вы правильно думаете дважды. Я не уверен, что вы можете обновить браузер ... Возможно, новый временный маршрут, который я имею в виду, не кэшируется браузером, а затем пытается удалить файлы cookie? Это просто divagation –

ответ

1

Я наконец нашел решение. Я использовал заголовок X-Forwarder-Proto, чтобы проверить, был ли запрос, полученный ELB, http или https. Затем я объединил правила выше, и это сработало!

RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker 
RewriteCond %{HTTP:X-Forwarder-Proto} ^http$ [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L] 
0

Если вы используете AWS, и вы сделали правила безопасности, как все HTTPS запрашивать и ударил ELB ELB экземпляр запроса в простой HTTP. Таким образом, это может быть так, что ELB конвертирует https-запрос в http. Пожалуйста, сначала проверьте свои правила безопасности, что они являются причиной?

+0

Это именно то, что я сделал, потому что сертификат ssl установлен в локте. Мое приложение получает HTTP-запросы и возвращает https. Как я могу перенаправить его на https: // www, не изменяя правила локтя? – ggeo

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