2016-09-27 3 views
1

Привет вот мои условия перезаписи:Проблемы при использовании апача RewriteRules

LogLevel alert rewrite:trace3 
RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule ^/(myapp)/ - [E=MY_URL:1] 

RewriteCond %{ENV:MY_URL} 1 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} 

Я пытаюсь перенаправить все, что происходит в http://www.example.com/myapp/ к https://www.example.com/myapp/, но мне кажется, что я получаю бесконечный цикл, я пытался ставить 2, поэтому, если HTTPS был на нем не должен перенаправление, любая помощь будет оценена, спасибо!

UPDATE 1 я изменить его к следующему

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/myapp 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301] 

Я не понимаю, часть [R = 301], но она по-прежнему дает мне ERR_TOO_MANY_REDIRECTS ошибку

+0

Вы не сделали перенаправление на стороне клиента. нет '[R = 301]', поэтому это чисто внутреннее переписывание. поскольку он только для внутреннего использования, вы приходите в no-ssl, устанавливаете свой env var, затем вы повторно вводите переписывание, с тем, что env var все еще установлен. –

+0

i обновил сообщение, я удалил env var – PaulMB

+0

'r = 301' отправляет клиенту переадресацию http 301 клиенту, говоря« идите сюда », и вот ваш новый https-url. без этого вы выполняете внутреннюю переписку «внутри apache», а сам клиент будет продолжать использовать запросы, отличные от ssl. –

ответ

0

Ok Я понял это благодаря другу и этому link,

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{REQUEST_URI} ^/myapp 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Я не знаю, почему RewriteCond %{HTTPS} off не работает здесь по моим правилам (apache 2.4), поэтому я использовал %{HTTP:X-Forwarded-Proto} !https вместо этого, работает как шарм.

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