htaccess предотвращает использование глобального перенаправления SSL в Chrome - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть сайты, к которым я добавляю SSL для последнего соответствия, у них есть защищенные папки администратора, глобальное перенаправление корня
# редирект на сайт ssl

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

заставляет посетителей использовать старый http:ссылка на администратор, чтобы перейти на страницу 404, так как перенаправление происходит рано.

Iv'e исправил это для Firefox, добавив правило остановки перед глобальным

# stop processing for admin
RewriteRule ^(admin)($|/) - [L] 

и конкретным перенаправлением

RewriteCond %{HTTPS} off
RewriteRule ^admin/(.*)$ https://www.mysite.co.uk/admin/$1?%{QUERY_STRING} [NE,r=301,L] 

однако в chrome остановка каталога завершается неудачно, а конкретное перенаправление игнорируется, поэтому посетители chrome получают 404 вместо перенаправления.

Я пробовал несколько добавлений в глобальный код, но ни один из них не работает #перенаправление на ssl-сайт

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^admin(.*)  [NC]
RewriteCond %{REQUEST_URI} !(.*)admin(.*)  [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/].*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

Почему Firefox и Chrome ведут себя по-разному, я думал, что это обрабатывает Apache, как заставить Chrome вести себя как Firefox?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

После публикации этого сообщения и несмотря на его тщательный поиск, появилось еще одно сообщение, и окончательный ответ на этот вопрос устранил проблему, поэтому решение состоит из двух частей, в корне я добавил:

RewriteCond %{HTTPS} ^off$ [NC]
RewriteCond %{REQUEST_URI} /admin/*
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R,L]

Затем впапка администратора:

<If "%{HTTPS} == 'on'">
  AuthType       Basic
  AuthName      "Authorization Required"
  AuthUserFile   /var/www/vHost/etc/HTTP-Basic-Auth/htaccess-Users
  require       valid-user
</If>
<Else>
  ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
</Else>

Однако я до сих пор не понимаю, почему Chrome ведет себя не так, как Firefox.

0 голосов
/ 28 ноября 2018

Я сомневаюсь, что Firefox ведет себя не так, как Chrome.Скорее всего, в Chrome есть кэшированное перенаправление, которое заставляет его посещать прежнюю цель перенаправления напрямую, не посещая исходный URL.Это происходит, если вместо 302 используется перенаправление 301, так как 301 означает постоянное перенаправление, и браузер запомнит это.

Чтобы избавиться от этой проблемы, необходимо очистить кеш браузера, чтобы он больше незапоминает и использует больше не действительный редирект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...