A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

2.7. Arquivo de Hypertext Access (.htaccess)

Nós mencionamos o arquivo APP_DIR/public/.htaccess quando falamos sobre estrutura de pastas. Agora vamos tentar entender o papel desse arquivo.

O arquivo .htaccess (hypertext access) é na verdade arquivo de configuração do servidor web Apache que permite sobrescrever a configuração global do servidor web. O arquivo .htaccess é uma configuração no nível de diretórios, o que significa que afeta apenas seu diretório próprio e todos os subdiretórios.

O conteúdo do arquivo .htaccess é apresentado abaixo:

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting or installed the project in a subdirectory,
# the base path will be prepended to allow proper resolution of
# the index.php file; it will work in non-aliased environments
# as well, providing a safe, one-size fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}/index.php [L]

A linha 1 informa aoApache para habilitar o mecanismo de reescrita de URL (mod_rewrite). O mecanismo de reescrita modifica as solicitações de URL recebidas, com base na regular expressions. Isso permite que você mapeie URLs arbitrárias em sua estrutura de URL interna da maneira que desejar.

As linhas 4 a 7 definem as regras de rewrite que informam ao servidor da Web que, se o cliente (navegador da Web) solicita um arquivo que existe no diretório raiz do documento, do que para retornar o conteúdo desse diretório arquivo como resposta HTTP. Porque nós temos nosso diretório public dentro da raiz de documentos do host virtual, permitimos que os usuários do site vejam todos os arquivos dentro do diretório public, incluindo index.php, Arquivos CSS, arquivos JavaScript e arquivos de imagem.

As linhas 14 a 16 definem regras do rewrite informam ao Apache o que fazer se o usuário do site solicitar um arquivo que não existe na raiz do documento. Nesse caso, o usuário deve ser redirecionado para index.php.

A Tabela 2.1 contém vários exemplos de rewrite de URL. Os primeiros e segundos URLs apontam para arquivos, então mod_rewrite retorna os caminhos de arquivos solicitados. O URL no terceiro exemplo aponta para um arquivo inexistente htpasswd (que pode ser um sintoma de um ataque de hacker), e com base em nossas regras de reescrita, o mecanismo retorna o arquivo index.php.

Table 2.1. Exemplos de URL rewrite
**URL Solicitada* URL Reescrita
http://localhost/index.php O arquivo existe, retorna para arquivo local APP_DIR/public/index.php
http://localhost/css/bootstrap.css O arquivo existe, retorna para arquivo local APP_DIR/public/css/bootstrap.css
http://localhost/htpasswd Arquivo não existe; retorna APP_DIR/public/index.php

Top