403 é o código adequado para um servidor da Web responder se o SSL for necessário.
Se eu fosse você, apenas definiria SSLRequireSSL
no vhost da porta 80 para esse caminho e deixaria fazer o que ele faz.
Qual é a maneira mais clara de definir um código de resposta personalizado dentro do Apache sem recurso para CGI?
Duas vezes nos últimos dias eu queria fazer isso. A primeira vez que aposentei um aplicativo da web. O código de status 410 (desaparecido) parecia o mais adequado. Eu criei este snippet usando mod_rewrite:
ErrorDocument 410 /retired.html
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !retired.html
RewriteRule . - [G]
retired.html
é uma mensagem exibida para qualquer pessoa seguindo links de outros lugares, para que eles entendam o que aconteceu.
Agora, tenho uma API de serviço da Web que só deve funcionar por HTTPS. Para o lado HTML, reescrevi as regras para redirecionar de HTTP para HTTPS, mas, para o acesso à API, prefiro que as solicitações não seguras recebam um erro grave. (Algumas bibliotecas HTTP do cliente seguem o redirecionamento em GET, então parece funcionar, então falhar de maneiras estranhas em POST, PUT ou DELETE.)
410 (ido) não é certo para isso, 403 (proibido) está mais perto, mas ainda não se sente bem. Obviamente, os códigos 3xx estão completamente errados.
Não há maneira, apenas dentro do Apache, de definir o código de status de resposta para uma solicitação?
Tags apache-2.2