1

Есть ли какой-либо способ в apache установить условие перезаписи на основе того, какой ответ HTTP-кода вы получаете? Сервер перед прокси-сервером oache (apache), который перенаправляет (302) моему авторизованному провайдеру; однако я не хочу, чтобы он проксировал что-либо в каталоге websocket - вместо этого я предпочел бы это вместо 403. Это все, чтобы предотвратить постоянную попытку повторного использования, которое не разрешено, и создание большого количества государственных файлов cookie для OpenIDC.rewritecond на основе кода состояния http

Спасибо за внимание.

Что-то вроде этого:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^my\.server\.co$ 
RewriteCond %{HTTP_RESPONSE} 302 
RewriteCond %{REQUEST_URI} ^/websocket 
RewriteRule (.*) $1 [F,L,NC] 

ответ

2

Вы должны быть в состоянии использовать:

<Location /websocket> 
    OIDCUnAuthAction 401 
</Location> 

Как указано here в примитивов конфигурации:

# (Optional) 
# Defines the action to be taken when an unauthenticated request is made. 
# "auth" means that the user is redirected to the OpenID Connect Provider or Discovery page. 
# "401" means that HTTP 401 Unauthorized is returned. 
# "pass" means that an unauthenticated request will pass but claims will still be passed when a user happens to be authenticated already 
# Useful in Location/Directory/Proxy path contexts that serve AJAX/Javascript calls and for "anonymous access" 
# When not defined the default "auth" is used. 
#OIDCUnAuthAction [auth|pass|401] 

(ну возвращающих бы, 401 вместо 403)

0

Прочие решения

RewriteEngine on 

ErrorDocument 403 /%{REQUEST_URI}/403.shtml 
ErrorDocument 404 /%{REQUEST_URI}/404.shtml 

RewriteCond %{REQUEST_URI} /([0-9]{3}+).shtml$ [NC] 
RewriteRule (.*) $1 [R=%1,L]