Web Servers - Mensagens de erro

Posted by webmaster | Web Servers |


“Service Unavailable”: esta é apenas uma das mensagens que você pode receber quando estiver navegando pela internet. Nem todos os provedores se dão o trabalho de editar as mensagens padrões e coloca-las num linguajar mais fácil ao entendimento de seus usuários. Por isso você recebe aquelas mensagens que mais parecem do além…

Através de um documento do Network Working Group, chamado RFC1945(HTTP/1.0) que depois foi atualizado para RFC2068(HTTP/1.1), padronizou-se os códigos HTTP de retorno e as mensagens descritivas que os clientes recebem em seus navegadores.

Ou seja, quando você esta navegando e digita uma URL, ou clica sobre determinado link, um código de status é retornado pelo servidor como resposta a uma solicitação, tendo sucesso ou não.

O código é composto de 3 dígitos inteiros. O primeiro digito indica a classe, e os dois seguintes identificam a linha descritiva, explicando resumidamente o que significa o código de status. Foram definidas inicialmente 5 classes de códigos:

. 1nn: Informacional - Não usado, mas reservado para utilização futura;
. 2nn: Sucesso - Ação recebida com sucesso, entendida e aceita;
. 3nn: Redireção - Outra ação deve ser executada para completar a requisição;
. 4nn: Erro do Cliente - Requisição contendo erro de sintaxe ou que não pode ser realizada;
. 5nn: Erro do Servidor - Falha no servidor ao realizar uma requisição válida.

Como as classes 1 e 2 não requerem nossa atenção, por não tratar-se de erro (pelo contrário), mostrarei os códigos numéricos mais comuns e freqüentes, suas linhas descritivas(resumo) e uma descrição detalhada do erro das últimas classes:

. Código - 301

.. Resumo - Movido Permanentemente;
.. Descrição - Um novo URL permanente foi atribuído ao recurso solicitado e qualquer referência futura a esse recurso deverá usar o novo URL. Você já deve ter passado por esta situação. Clica em um determinado link, abre-se uma página dizendo que aquele site não se encontra mais no provedor e este pede que espere um pouco enquanto redireciona para o atual endereço;

. Código - 302

.. Resumo - Movido Temporariamente;
.. Descrição - O recurso solicitado reside temporariamente em um URL diferente. Como o redirecionamento é alterado algumas vezes, o cliente deve continuar apontando para a URL antiga nas próximas solicitações. Mesma situação do código acima, só que a mudança é momentânea, existindo a possibilidade de retorno para o endereço original;

. Código - 304

.. Resumo - Não Modificado;
.. Descrição - Se o cliente tiver feito uma solicitação (GET condicional) e o acesso for permitido, mas o documento não tiver sido modificado desde a data e hora especificados no campo ‘If-Modified-Since’, o servidor responderá com este código de status e não enviará uma nova entidade ao cliente. Os campos de cabeçalho contidos na resposta deverão incluir somente informações relevantes aos gerenciadores de cache e que possam ter sido alteradas independentemente da data especificada no campo ‘Last-Modified’. Como exemplos de campos de cabeçalho relevantes, podemos citar a Data, Servidor e Expira em. É através deste código que seu browser sabe se aquela pagina que esta no cache de sua maquina, precisa ou não ser atualizada;

. Código - 400

.. Resumo - Solicitação inválida;
.. Descrição - A solicitação(link/URL) não pôde ser entendida pelo servidor devido à sintaxe estar incorreta. Como a classe 4 trata dos erros dos clientes(nós), com toda certeza você deve ter digitado algo errado no endereço. Corrija e tente novamente;

. Código - 401

.. Resumo - Não autorizado;
.. Descrição - A solicitação requer uma autenticação do usuário. Provavelmente você esta entrando em um site que necessita de um login - nome de usuário e uma senha. Tipicamente, é uma questão de permissão de arquivo (comum em ambientes UNIX) e que não deveria acontecer num “site” que disponibiliza informações públicas;

. Código - 403

.. Resumo - Proibido;
.. Descrição - O servidor entendeu a solicitação, mas se recusa a realizá-la por um motivo não especificado. A autenticação não resolverá o problema e a solicitação não deverá ser repetida. Este código de erro é geralmente usado quando o servidor não deseja divulgar exatamente porque a solicitação foi recusada, ou quando nenhuma outra resposta é aplicável. Nos sites da Microsoft, se você for um usuário registrado, na maioria das vezes poderá corrigir este problema acrescentando um S ao final do protocolo HTTP - resultando em HTTPS;

. Código - 404

.. Resumo - Não encontrado;
.. Descrição - Not Found. A mais famosa e conhecida de todos! O servidor não encontrou nada que corresponda à solicitação e também não informa se a condição é temporária ou permanente. Na maioria das vezes quando estamos digitando um endereço, trocamos a barra normal pela barra invertida, esquecemos o til, colocamos minúscula onde deveria ser maiúscula, ou simplesmente digitamos errado mesmo a URL. Mas pode ser erro também de quem administra o site. Acabou mudando o nome de algum arquivo e não atualizou as outras páginas, o computador onde se encontra a informação esta travado, ou ate o provedor pode estar ‘down’ - aí nem com reza;

. Código - 500

.. Resumo - Erro interno do servidor;
.. Descrição - O servidor encontrou uma condição inesperada que o impediu de atender à solicitação. Algumas vezes, isto ocorre porque o servidor pode estar muito ocupado devido ao fluxo de informações ou quantidade de usuários sendo atendidos, ou porque a conexão de seu provedor ate a solicitação de destino, está com problemas temporário. Neste caso, espere um pouco e tente novamente;

. Código - 501

.. Resumo - Não implementado;
.. Descrição - O servidor não suporta a funcionalidade requerida para efetuar à solicitação. Está é geralmente uma justificativa conveniente que os provedores dão quando os servidores não reconhecem o método de requisição e não são capazes de suportar alguns recursos;

. Código - 502

.. Resumo - Gateway inválido;
.. Descrição - O servidor recebeu uma resposta inválida do gateway/proxy ou de outro servidor acessado ao tentar efetuar à solicitação. Neste caso, espere alguns minutos e tente novamente a solicitação;

. Código - 503

.. Resumo - Serviço indisponível;
.. Descrição - O servidor está atualmente incapaz de efetuar a solicitação devido a uma sobrecarga temporária ou manutenção do servidor. Devido a diversos fatores, esta é uma condição que na maioria das vezes, é resolvida depois de alguma atraso.

Autor/fonte: Vas-y.com

Web Servers - htaccess rapidinho: Introdução ao htaccess

Posted by webmaster | Web Servers |


O htaccess é um arquivo cujo nome é .htaccess, como se fosse apenas identificado pela sua extensão (possui um ponto e a extensão). É um arquivo de configuração usado pelo servidor web Apache - e apenas pelo Apache. Como o Apache domina amplamente o ambiente web, vale a pena conhecer este arquivo e seu grande potencial. Se você achar interessante, dê uma olhada na documentação oficial do Apache.

htaccess é próprio do Apache, não do NT. Existem algumas capacidades semelhantes em servidores NT mas que, na minha opinião, são extremamente limitadas e falhas.

A primeira coisa é descobrir se você pode ter acesso ao htaccess. Se o seu servidor roda Unix ou Linux, ou qualquer versão do Apache, então existe um arquivo htaccess. O problema é descobrir se o acesso a este arquivo é permitido. Se você não encontrar uma referência direta quanto ao uso do htaccess, um bom indicativo é a possibilidade de proteger diretórios com senha - geralmente a proteção é feita via htaccess. Em último caso, faça seu próprio arquivo htacess, transfira-o para o seu servidor e teste-o: funcionou, está liberado.

Criar um arquivo htaccess não é uma tarefa difícil porque, na realidade, é um arquivo texto constituído por algumas instruções simples.

Funções do htaccess

A função mais conhecida do htaccess é a de possibilitar a apresentação de páginas personalizadas para o erro 404 (arquivo inexistente). A mais conhecida, mas apenas uma das muitas funções possíveis: proteger diretórios com senha, redirecionamento automático, alteração de extensões de arquivos, bloqueio de usuários com determinados endereços IP, autorização de IPs específicos, impedir listagem de diretórios, ativar SSI, usar páginas índice diferentes, adicionar tipos MIME, evitar o “hot linking” e outras.

As principais funções do htaccess serão abordadas, explicando e exemplificando seu uso, como também apresentando suas limitações e perigos.

Recomendações gerais

Um arquivo htaccess é um simples arquivo ASCII, o mesmo que é criado quando se usa um editor de texto do tipo do Bloco de Notas do Windows. Muita gente se confunde com a convenção do nome deste arquivo, por isso é bom eliminar inicialmente esta dificuldade:

.htaccess É a extensão do arquivo. Seu nome é simplesmente .htaccess, não é arquivo.htaccess ou algumapágina.htaccess.

O upload de arquivos htaccess precisa ser no modo ASCII, não BINARY. Após o upload, verifique se a permissão é 644 (RW-R–R–). Isto faz com que o arquivo possa ser usado pelo servidor mas evita que possa ser lido pelo browser (o que comprometeria seriamente sua segurança).

A maioria dos comandos num htaccess devem ser colocados em uma linha própria. Certifique-se de que seu editor de texto esteja com rearranjo de linhas (word wrap) desativado para evitar a inclusão de caracteres de quebra de linha, geralmente não visíveis, que poderão gerar erros.

Arquivos htaccess atuam sobre o diretório onde estão localizados e sobre todos os respectivos subdiretórios. Isto significa que, colocando um htaccess no diretório raiz, todos os diretórios do site serão afetados. Digamos que exista um htaccess no diretório raiz atuando sobre todos os outros diretórios e que queremos definir propriedades diferentes para o diretório raiz/texto/escondido/. Neste caso, basta criar o arquivo htaccess desejado e colocá-lo no diretório /escondido. Este último tomará o lugar do que está no diretório raiz.

Alerta: cuidado com o uso de múltiplos arquivos htaccess. A coisa mais fácil é criar loops infinitos, que “penduram” o seu servidor. Por exemplo, você redireciona uma página para outra que esteja num diretório que redireciona a referida página novamente para a página original… já viu, né?

Alerta: as extensões FrontPage da Microsoft usam o arquivo .htaccess. Neste caso, apesar de não ser recomendado, é possível editar o htaccess e inserir informações próprias no início do arquivo. Mas cuidado, não vá detonar o arquivo original!

Escrevendo seu próprio arquivo htaccess

Não saia na louca pondo arquivos htaccess em tudo que for diretório. Vá com calma. Analise inicialmente sua real necessidade e sua melhor localização, implemente um arquivo por vez e teste tudo antes de continuar.

Leia com atenção as diretivas do Apache, em especial os comandos do htaccess, de preferência na fonte - Diretivas do Apache (http://httpd.apache.org/docs/mod/directives.html). Está em inglês mas é tranquilo.

Antes de começar a compor o arquivo, leia com atenção os exemplos fornecidos e que cobrem as aplicações mais importantes (veja logo abaixo). De início, implemente um comando por vez: crie o arquivo, faça o upload e teste. Deu caca? Ou a sintaxe do comando está errada ou seu servidor não permite o uso do comando em questão. Volte para a versão anterior e continue seu trabalho.

No início é penoso, mas este procedimento permite estabelecer as limitações impostas por seu servidor e faz com que você se familiarize com o fantástico htaccess.

Autor/fonte: Vovó Vicki

Web Servers - htaccess rapidinho: Documentos de erro

Posted by webmaster | Web Servers |


A aplicação mais conhecida do arquivo .htaccess talvez seja, em casos de erro, de direcionar usuários para páginas de erro personalizadas. Digamos que um usuário solicite uma página inexistente - ele recebe a página padrão do sistema do seu servidor avisando-o do ocorrido. Para personalizar seu site, é possível criar suas próprias páginas de erro e, quando for o caso, direcionar os usuários para elas.

Para criar suas próprias páginas de erro é necessário que você conheça os códigos de erro retornados pelo servidor. Na coluna à direita você encontra todos os códigos de erro atualmente padronizados. É claro que não há necessidade de fazer páginas para cada um deles… na verdade, você nem deveria. Um documento de erro para o código 200 causaria um loop infinito cada vez que uma página fosse encontrada - uma nhaca!

Geralmente cria-se documentos de erro para os código 404 e 500, para páginas não encontradas e para poder controlar erros internos do servidor em scripts que estejam sendo utilizados. Também é interessante personalizar o erro 401 - Autorização Requerida - quando se tem áreas protegidas e o erro 403 - Proibido - quando se tem arquivos com permissão de uso bloqueada. Outra possibilidade seria tratar o erro 400 - Requisição Viciada - para capturar erros em scripts ou URLs malucas que um usuário possa tentar usar.

Para especificar seus próprios documentos de erro, tudo o que você precisa é adicionar o seguinte comando, em uma linha, ao seu arquivo htaccess:

ErrorDocument code /diretorio/nomearquivo.ext

Ou:

ErrorDocument 404 /erros/naoencontrado.html

E, de forma análoga:

ErrorDocument 500 /erros/errointerno.html

Você pode usar os nomes que quiser para seus documentos de erro - para facilitar, recomendo que lembrem a função das mesmas - e colocá-los em qualquer diretório que seja acessível pela web através de uma URL. A primeira barra corresponde ao diretório raiz do site. Eu, pessoalmente, prefiro mantê-los num diretório próprio para facilitar a manutenção e para poder controlar spiders indexando estas páginas através de um arquivo ROBOTS.TXT.

Na hipótese de capturar todos os erros acima mencionados e direcionar o usuário para páginas específicas, o arquivo htaccess teria a seguinte configuração:

ErrorDocument 400 /erros/badrequest.html
ErrorDocument 401 /erros/authreqd.html
ErrorDocument 403 /erros/forbid.html
ErrorDocument 404 /erros/notfound.html
ErrorDocument 500 /erros/serverr.html

Não se esqueça de que cada precisa estar numa linha única própria. Pode-se também especificar um endereço URL completo, como por exemplo http://seusite.com/erros/notfound.html, apesar de que a forma padrão é o endereçamento relativo como mostrado acima.

Acredite ou não, mas você também pode especificar HTML!

ErrorDocument 401 ”
Observe que, logo no início do código HTML, existem aspas. Observe também que, no final do código HTML, não há aspas. É assim mesmo que deve ser feito e, lembre-se, tudo numa única linha sem word wrap! Apesar de existir esta opção, você tem muito mais controle sobre páginas de erro quando usadas em conjunto com xSSI ou CGI ou ambos. Eu uso, por exemplo, uma página de erro 404 que, além da mensagem para o usuário, contém código PHP que me envia um e-mail com a indicação do documento faltante toda vez que a página é acessada. Se tiver curiosidade, dê uma olhada em Capturando erros do servidor.

Bem, para páginas personalizadas de erro isto é tudo. Experimente e divirta-se. É claro que um arquivo htaccess com estes comando deve ficar preferencialmente no diretório raiz para que possa capturar possíveis erros em qualquer setor do site.

Requisições de cliente bem sucedidas:

. 200 - OK;
. 201 - Criado (Created);
. 202 - Aceito (Accepted);
. 203 - Informação não autorativa (Non-Authorative Information);
. 204 - Sem conteúdo (No Content);
. 205 - Conteúdo resetado (Reset Content);
. 206 - Conteúdo parcial (Partial Content).

Requisição de Cliente redirecionada:

. 300 - Escolhas múltiplas (Multiple Choices);
. 301 - Mudado permanentemente (Moved Permanently);
. 302 - Mudado temporariamente (Moved Temporarily);
. 303 - Veja outras (See Other);
. 304 - Não modificado (Not Modified);
. 305 - Use Proxy (Use Proxy).

Erros de requisições de cliente:

. 400 - Requisição viciada (Bad Request);
. 401 - Requer autorização (Authorization Required);
. 402 - Requer pagamento (Payment Required (ainda não usada));
. 403 - Proibido (Forbidden);
. 404 - Não encontrado (Not Found);
. 405 - Método não permitido (Method Not Allowed);
. 406 - Não aceitável (codificação) (Not Acceptable (encoding));
. 407 - Requer autenticação proxy (Proxy Authentication Required);
. 408 - Requisição vencida (Request Timed Out);
. 409 - Requisição conflitante (Conflicting Request);
. 410 - Acabou (Gone);
. 411 - Requer comprimento do conteúdo (Content Length Required);
. 412 - Falha na precondição (Precondition Failed);
. 413 - Entidade requerida muito longa (Request Entity Too Long);
. 414 - URI requerida muito longa (Request URI Too Long);
. 415 - Tipo de mídia não suportado (Unsupported Media Type).

Erros do servidor:

. 500 - Erro interno do servidor (Internal Server Error);
. 501 - Não implementado (Not Implemented);
. 502 - Gateway viciado (Bad Gateway);
. 503 - Serviço não disponível (Service Unavailable);
. 504 - Gateway vencido (Gateway Timeout);
. 505 - Versão HTTP não suportada (HTTP Version Not Supported).

Autor/fonte: Vovó Vicki

Page 1 of 512345»