Рейтинг:0

пытается перенаправить в .htaccess, если это не администратор

флаг us

Я пытаюсь написать правило в .htaccess, которое перенаправляет все /wp-админ к /авторизоваться ЕСЛИ ТОЛЬКО определенный пользователь (WebAdministrator) не входит в систему. Как мне сделать такое правило?

Если я использую:

Переписать ^wp-admin /login [R=301,NC,L]

затем он ломает его, потому что он будет продолжать перенаправлять на /авторизоваться, даже для администратора, поскольку, когда администратор входит в систему, он должен видеть панель на /wp-админ

флаг in
Как Apache должен знать, кто пользователь?
Jed Booth avatar
флаг us
Это невозможно. Я запускаю Apache на сервере и полагаю, что если я помечу Apache, это расширит аудиторию, и большинство людей, которые являются настоящими администраторами, которые используют Apache, увидят это, и им будет легко.
флаг in
Если Apache не может различать пользователей, как он должен знать, когда перенаправлять, а когда нет?
Рейтинг:1
флаг jp

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

Jed Booth avatar
флаг us
Я люблю аналогию. хаха спасибо.
Рейтинг:1
флаг cn

Есть несколько способов сделать это в apache, но ни один из них не является хорошим.

Вместо этого лучше всего сделать это в wordpress, либо создать крошечный плагин для wordpress, чтобы изменить все wp-login.php (местоположение страницы входа) на ваш пользовательский /login, используя соответствующий хук: https://developer.wordpress.org/reference/hooks/login_url/

Единственные способы перезаписи apache могут узнать, вошел ли кто-то в систему, - это спросить wordpress или прочитать файл cookie напрямую.

В первом случае вам понадобится собственный скрипт, работающий из модуля перезаписи с использованием режима PRG RewriteMap (https://httpd.apache.org/docs/current/rewrite/rewritemap.html#prg), чтобы запустить PHP-скрипт, который запрашивает систему аутентификации WordPress, чтобы узнать, вошли ли они в систему, и переписать соответствующим образом.

Вы также можете проверить значение cookie напрямую, используя RewriteCond на основе переменной HTTP_COOKIE (см. https://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#RewriteCond)

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

флаг kz
«проверить значение файла cookie напрямую» - хотя вы не сможете фактически _проверить_ файл cookie, если не используете «пользовательский скрипт», как упоминалось ранее. И это не решает проблему «курица-и-яйцо»… как в первую очередь входит «Администратор», если URL-адрес, используемый для входа, перенаправляется?
флаг cn
Поскольку URL-адрес, используемый для входа в установку WordPress, — это /wp-login.php, а не /wp-admin. Хотя, поскольку в вопросе упоминается перенаправление на /login, я предполагаю, что где-то отсутствует часть.

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

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