Рейтинг:0

Что не так с этой конфигурацией NGINX, которая перезаписывает URL-адреса, если пользователь не вошел в WordPress?

флаг eg

У меня есть конфигурация NGINX, которая должен перенаправить пользователя на страницу входа в WordPress, если этот пользователь не вошел в WordPress, но работает не совсем корректно. Вместо этого он перенаправляет все пользователей на страницу входа, независимо от их статуса входа в систему...

установить $bad_uri 0;
if ($request_uri ~* ((^/частная-страница-1/)|(^/частная-страница-2/)|(^/частная-страница-3/)|(^/частная-страница-4/) )){
    установить $bad_uri 1;
}
установить $logged_in 0;
если ($http_cookie ~* "wordpress_logged_in" ){
    установить $logged_in 1;
}
установить $pls_stop "$bad_uri:$logged_in";
если ($pls_stop = "1:0"){
    переписать ^/* https://my-website.org/wp-login.php навсегда;
}

С другой стороны, у меня есть другая конфигурация NGINX, которая ЯВЛЯЕТСЯ работает правильно. Как и в предыдущем случае, предполагается запретить доступ к любым файлам в определенном каталоге, если только пользователь не вошел в систему WordPress. Этот конфиг работает идеально, как задумано...

установить $bad_uri 0;
если ($request_uri ~* ^/wp-content/uploads/_private_directory/){
    установить $bad_uri 1;
}
установить $logged_in 0;
если ($http_cookie ~* "wordpress_logged_in" ){
    установить $logged_in 1;
}
установить $pls_stop "$bad_uri:$logged_in";
если ($pls_stop = "1:0"){
    вернуть 403;
}

Учитывая тот факт, что базовая логика обоих конфигов практически одинакова, то почему первый работает только наполовину, а второй работает нормально?

Ivan Shatsky avatar
флаг gr
Постоянные перенаправления HTTP 301 кэшируются большинством браузеров, а это означает, что после того, как незарегистрированный пользователь посетит вашу личную страницу и будет перенаправлен, он будет перенаправляться каждый раз, когда он посещает ту же страницу, независимо от того, зарегистрирован он или нет, до тех пор, пока кеш браузера будет очищен. Вместо этого используйте `rewrite ... redirect` для выдачи временного перенаправления HTTP 302, или лучше используйте `return 302 https://my-website.org/wp-login.php` (по возможности избегайте вызова библиотеки регулярных выражений).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.