Почему HTACCESS RewriteCond %{HTTP_COOKIE} только для php и не работает для html?
Я пытался перенаправить весь прямой доступ в моей подпапке с помощью этого кода
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !user_cookie=[^;]
RewriteRule .* http://webhost.org/ [R=301,L]
Я понимаю, что это работает только для файлов OHP, но не для других файлов, таких как HTML. Я попытался получить доступ к ссылке на файл PHP, и она работает, как я планировал, но когда я получаю доступ к другому файлу с .html
расширение оно не перенаправляет, как если бы оно игнорировало условие .htaccess
,
Я новичок в .htaccess
, Что я делаю неправильно?
Информация о сервере:
- новая установка Vestacp
- Apache / 2.2.15 (CentOS 6 x64)
1 ответ
Размещенный вами код не обязательно относится к "прямым" запросам. Это применимо, когда cookie не установлен (т.е. не отправлен обратно в Cookie
Заголовок HTTP-запроса) - это не одно и то же. (Предположительно, вы устанавливаете "сеансовый" файл cookie? Однако определение "сеанса" в браузере может быть разным, поэтому эти файлы cookie могут оказаться более устойчивыми, чем вы ожидаете.)
Если он "работает только для файлов PHP, но не для других файлов, таких как HTML", то это потому, что браузер не отправляет Cookie
Заголовок HTTP-запроса для запросов к вашим PHP-файлам - по какой-то причине. Может быть, это неправильные файлы PHP и Cookie:
заголовок должен быть отправлен - как для файлов HTML?
Разница между вашими файлами PHP и HTML может заключаться в кэшировании, домене и / или URL-пути. Это не имеет ничего общего с вашим .htaccess
скрипт.
Чтобы проверить "прямой доступ", чаще проверяют наличие пустого Referer
заголовок. Однако этот (и любой) используемый вами метод не будет полностью надежным.