@zzmaster

Как в htaccess разрешить доступ по некоторым параметрам URI?

Здравствуйте,

У меня стоит задача разрешить доступ в папку только с использованием некоторого перечня токенов, например
domain.com/?token=111

Я могу перечислить токены подобным образом
RewriteCond %{QUERY_STRING} \.png
RewriteCond %{QUERY_STRING} token=1 [OR]
RewriteCond %{QUERY_STRING} token=2 [OR]
RewriteRule .+ $0

(да, нужно открыть доступ к картинкам), последним стоит правило разрешающее, но как в htaccess поставить ELSE и правило запрещающее? Возможно ли это?

OK, я пошел другим путем - с использованием переменных. Как оказалось, SetEnv/SetEnvIf обрабатывается после mod_rewrite, и я начал пробовать устанавливать переменные с помощью mod_rewrite
RewriteCond %(QUERY_STRING) .
RewriteRule .+ $0 [env=ALLOW_IT:no]

RewriteCond %{ENV:ALLOW_IT} no
RewriteRule ^(.*) - [F]

есть запрет
RewriteCond %(QUERY_STRING) .
RewriteRule .+ $0 [env=ALLOW_IT:no]

RewriteCond %{QUERY_STRING} .
RewriteRule .+ $0 [env=ALLOW_IT:yes]

RewriteCond %{ENV:ALLOW_IT} no
RewriteRule ^(.*) - [F]

все равно есть запрет. Установленную переменную невозможно переопределить?

Вобщем, я достиг полной фрустрации и буду благодарен а помощь.
  • Вопрос задан
  • 2403 просмотра
Пригласить эксперта
Ответы на вопрос 1
@zzmaster Автор вопроса
вобщем, прблема решена.
RewriteCond %(REQUEST_URI) .*
RewriteRule .+ $0 [env=ALLOW_IT:no]

RewriteCond %{REQUEST_URI} \.png
RewriteRule .+ $0 [env=ALLOW_IT:yes]

RewriteCond %{QUERY_STRING} token=1
RewriteRule .+ $0 [env=ALLOW_IT:yes]

RewriteCond %{QUERY_STRING} token=2
RewriteRule .+ $0 [env=ALLOW_IT:yes]

RewriteCond %{ENV:ALLOW_IT} no
RewriteRule ^(.*) - [F]


во превых, была путаница QUERY_STRING и REQUEST_URI, ну и для сопоставления с любым REQUEST_URI одной точки мало, надо .* чтоб с пустой строкой сопоставилось.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы