Я пытаюсь перенаправить всех, кто получает доступ к разделу администратора моего сайта, на его версию HTTPS. Текущее правило перезаписи выглядит следующим образом:
server {
listen 80;
server_name domain.com;
location / {
index index.php index.html;
root /home/domain.com/public;
}
#Redirect Admin requests to secure server
location /www/admin/ {
rewrite ^/(.*) https://domain.com$1 permanent;
}
}
Проблема с этим правилом в том, что это только пересылка http://domain.com/www/admin
на HTTPS - собирается http://domain.com/www/admin/index.php
, например, не перенаправляет. Есть идеи, как исправить это, чтобы что-нибудь НИЖЕ /www/admin
тоже перенаправляется?
Прочтите четыре правила в статье вики, на которую ссылается AlexD. Расположение регулярных выражений (например, местоположение вашего PHP) имеет приоритет над обычными статическими местоположениями. Чтобы предотвратить это, вы хотите использовать ^~
отметьте свое статическое местоположение:
location ^~ /www/admin/ {
rewrite ^ https://domain.com$request_uri? permanent;
}
РЕДАКТИРОВАТЬ: Кроме того, вы не должны устанавливать корень в местоположении /
. Установите его на сервере, и пусть все ваши местоположения наследуют настройку. Видеть Подводные камни и распространенные ошибки 1.2
Обратитесь к документации nginx для описания директива местоположения. Вы должны использовать location
вместо location =