воскресенье, 1 марта 2020 г.

Установить COOKIE через .htaccess

Думаете нельзя? :) Можно! Я тоже раньше думал, что установить куку через .htaccess нельзя, а можно только с помощью PHP или JS. Но нет. Вариант через .htaccess всё-таки есть, и это очень хорошо!

Сопоставляя изучение документации с великим методом тыка (естественно, научного!), пришёл к выводу, что делается это примерно так:

RewriteCond %{REQUEST_URI} externalAccessAllow
RewriteRule .* https://%{SERVER_NAME}? [R=301,L,CO=externalAccess:allow:%{SERVER_NAME}:1440:/]

То есть через рерайт. Условия редиректа могут быть и другие, конечно же. Но смысл в том, что делаем редирект и в флаге прописываем, что для новой загрузки устанавливаем cookie.

В принципе, на этом всё.

Теперь не по теме, но сюда же добавлю, что в зависимости от cookie можно установить и переменную mod_setenvif, например:

SetEnvIfNoCase Cookie "externalAccess=allow" AllowGroup

Но это сработает именно для перезагрузки после редиректа. А если надо установить AllowGroup уже и для этой загрузки, можно использовать атрибут Request_URI:

SetEnvIfNoCase Request_URI externalAccessAllow AllowGroup

Что касается установки через Query_String - для редиректа это сработает. Но в качестве атрибута SetEnvIf это не работает. По крайней мере на сервере, где я тестил. Думаю, есть зависимость от версии mod_setenvif.

Полезные ссылочки:
Apache Module mod_setenvif;
Apache Module mod_rewrite (там есть таблица со всеми флагами для RewriteRule);
RewriteRule Flags (тут можно найти про флаг CO, он же cookie).


Комментариев нет:

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