Como posso configurar o Apache para sempre retornar um erro

3

Eu quero deliberadamente lançar um erro arbitrário. Algo apropriado entre as diretivas <LocationMatch> ... </LocationMatch> . por exemplo:

<LocationMatch "^/myurl/.+">
    ThrowError 503
</LocationMatch>

<LocationMatch "^/anotherurl/.+">
    ThrowError 504
</LocationMatch>

<LocationMatch "^/safeurl/">
    # not throwing an error from this path
    Options +Indexes
</LocationMatch>

O que posso usar em vez de ThrowError 503 ? Eu quero forçar o servidor a informar ao usuário qualquer código de erro que eu escolher (por exemplo, 404, 403, 501, etc) como um meio de testar minhas regras. Na pior das hipóteses, eu gostaria de uma mensagem escrita para o error_log se eu não puder realmente lançar um erro no navegador.

Estou ciente de que poderia usar mod_rewrite para executar um RewriteRule .* - [R=503,L] , mas quero apenas usar os módulos principais (não tenho mod_rewrite compilado no meu Apache).

Atualização : descobri que posso dizer RedirectMatch 410 . , que relatará uma mensagem "Gone" ao usuário como uma solução potencial.

    
por PP. 20.10.2010 / 13:07

1 resposta

2

Como você mencionou a si mesmo, a diretiva Redirect (não necessária para RedirectMatch , eu acho?) que é parte de mod_alias deve fazer o truque.

Nos documentos:

Other status codes can be returned by giving the numeric status code as the value of status. If the status is between 300 and 399, the URL argument must be present, otherwise it must be omitted. Note that the status must be known to the Apache code (see the function send_error_response in http_protocol.c).

Exemplo: Redirect 303 /three http://example.com/other

Editar:

Eu não sei muito sobre o código C, mas a partir de uma rápida olhada no http_protocol.c, estas são suas opções:

100 Continuar 101 protocolos de comutação
102 Processando

200 OK
201 Criado
202 Aceito pela
203 Informações não autorizadas
204 Nenhum conteúdo
205 Redefinir conteúdo
206 Conteudo Parcial
207 Multi-Status

300 escolhas múltiplas
301 movido permanentemente
302 Encontrados 303 Ver outros
304 não modificado
305 Use Proxy Review 306 não utilizados
307 Redirecionamento Temporário

400 Pedido incorreto
401 Autorização necessária
402 pagamento exigido
403 Proibido
404 não encontrado
405 Método não permitido
406 Não Aceitável
Autenticação de proxy 407 necessária
408 Tempo Limite de Pedido
409 Conflito
410 foi ido 411 Comprimento necessário
412 Precondição falhou
413 Solicitar entidade muito grande
414 solicitação-URI muito grande
415 Tipo de Mídia Não Suportado
416 Faixa solicitada não é insatisfável
417 expectativas falharam
418 não utilizados
419 não utilizados
420 não utilizados
421 não utilizados
422 Entidade não processável
423 travado
424 falha na dependência | 425 Nenhum código
426 Upgrade necessário

Erro interno do servidor 500
501 Método não implementado
502 Bad Gateway
503 Serviço temporariamente indisponível Tempo limite da porta de 504 505 Versão HTTP não suportada
506 Variant Também Negociação
507 Armazenamento insuficiente 508 não utilizados
509 não utilizados
510 não estendido

    
por 20.10.2010 / 16:14

Tags