Apache2 reescreve sem o htaccess

3

Ao ler as atualizações do url no Apache2, descobri o seguinte:

"In general, you should never use .htaccess files unless you don't have access to the main server configuration file.

Ok, ótimo. Mas não há informações em nenhum lugar sobre como fazer isso no arquivo de configuração do servidor. Então, antes que eu estrague as coisas, posso usar com segurança as mesmas diretivas de reescrita, como

<IfModule mod_rewrite.c>    
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^test/(\w+)$ test.php?n=$1 [L]
</IfModule>

em /etc/apache2/apache2.conf ? /etc/apache2/httpd.conf está em branco, mas suponho que eu também poderia fazer isso lá?

Outra pergunta, os caminhos de regra de reconfiguração devem ser prefixados com /var/www/ ou posso fazê-lo em relação à raiz do site? Obrigado.

    
por inorganik 28.11.2012 / 05:59

1 resposta

1

Eu não concordo necessariamente com os motivos deles para que você evite arquivos .htaccess . Suas razões são:

  • O motivo 1 é o desempenho - o Apache precisa varrer diretórios e ler e analisar os arquivos .htaccess em tempo de execução. Isso não é um grande fardo e armazena bem.

  • Razão 2 é segurança. Você está permitindo que os usuários modifiquem a configuração do Apache. Mas eles estão apenas modificando sua configuração local para esse diretório específico, e é possível especificar na configuração global do Apache quais diretivas eles são e não têm permissão para modificar. Além disso, se os usuários têm acesso para editar arquivos .htaccess é um problema de segurança para você, então certamente também permitir que os mesmos usuários usem arquivos .php é um problema de segurança ainda maior.

Ainda há alguns benefícios em usar o .htaccess. De certa forma, é um padrão de fato, tanto que você pode depender muito de ser capaz de usá-lo em hospedagem compartilhada, e muitos pacotes de software de aplicativo da web fazem uso deles em seu próprio software. E isso significa que a configuração local do Apache é mantida com o aplicativo que está configurando, o que pode ser bom para backups, controle de versão, etc.

De qualquer forma, se você quer dar atenção a este conselho, é com você.

Se você quiser passar para a configuração global do Apache, você pode fazer como no seu exemplo.

No entanto, o arquivo global apache2.conf pode ser um pouco confuso e foi instalado pelo próprio pacote Apache2. Para uma solução mais portátil, coloque suas regras em arquivos de configuração individuais:

  • O Apache2 lê todos os arquivos de configuração em /etc/apache2/conf.d/ . Isso pode ser bom para qualquer diretiva de configuração geral que você queira adicionar que não esteja relacionada a nenhum host virtual específico. Basta adicionar um novo arquivo lá e colocar a configuração nele.

  • O Apache2 armazena arquivos de configuração para cada host virtual em /etc/apache2/sites-available/ . Esse é um lugar sugerido para colocar em configuração para cada host virtual, em arquivos separados. Em seguida, ative e desative esses hosts virtuais com a2ensite e a2dissite .

    Supondo que essas diretivas de configuração se aplicam especificamente a um determinado host virtual, eu escolheria o último - coloque-o em qualquer lugar onde você colocou a configuração desse host virtual (que eu recomendaria colocar em /etc/apache2/sites-available/ .

por thomasrutter 28.11.2012 / 06:22

Tags