@Shimpanze

Существует ли возможность установить порядок исполнения скриптов в файле .htaccess?

Добрый день!

Установил пароль на папку на сервере. В саму папку положил файл .htaccess с содержимым:

# Редирект всех страниц с http:// на https://
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# И только теперь просим ввести пароль
AuthType Basic
AuthName "Пожалуйста, авторизуйтесь"
AuthUserFile полный/путь/на_сервере/.htpasswd
require valid-user


Почему на сервере приходится авторизоваться дважды? Я ведь первым установил код, который перенаправляет на https?

А сейчас, я захожу на свой сайт (просто ввожу название: site.ru), он просит авторизоваться, а потом перескакивает на https и снова требует авторизации.

Вопрос: как просить авторизоваться ПОСЛЕ того, как произошел редирект на https?

Спасибо!
  • Вопрос задан
  • 54 просмотра
Решения вопроса 2
borisdenis
@borisdenis
Ленив и вреден...
Если не ошибаюсь то поддерживаются условия if else, что-то типа такого
<If "%{HTTPS} == 'on'">
  AuthName "Files are protected, enter your normal website email and password"
  AuthType Basic
  AuthUserFile /home/sites/mysite.co.uk/.htpasswd
  Require valid-user
</If>
<Else>
  RewriteEngine On
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</Else>
Ответ написан
@dodo512
Для Apache версий ниже 2.4 можно воспользоваться ErrorDocument.
В корне сайта создать файл 401.php c таким содержимым:
<?php

if ($_SERVER['SERVER_PORT'] != '443') {
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
    exit;
}

?>
<html>
<head><title>401 Unauthorized</title></head>
<body><h1>Unauthorized</h1></body>
</html>

А в файл .htaccess добавить строку:
ErrorDocument 401 /401.php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы