O Apache Adiciona Slash Trailing Apesar de RewriteRule

3

Estou usando um simples .htaccess para lidar com tudo com um script PHP:

RewriteEngine on
RewriteRule . index.php

Meu index.php apenas ecoa variáveis de servidor no momento (com um %código%); Tudo funciona bem, eu digito qualquer coisa na URL e o conteúdo index.php é mostrado. No entanto, considerando isso estrutura:

test/           # document root
  folder/       # empty folder
  index.php
  .htaccess

Percebi que acessar print_r($_SERVER) primeiro redireciona o navegador para [site]/folder e, em seguida, mostra o conteúdo adequado do index.php . Porque é isso está acontecendo? Não é a regra de reescrita deveria redirecionar tudo "como está"?

Isso está sendo usado com o host virtual configurado para testar um site localmente. Configurado com o mínimo. Poderia haver outros arquivos apache sendo carregado antes do meu .htaccess ?

<VirtualHost *:80>
    ServerName test.local
    DocumentRoot /Library/WebServer/Documents/test/
</VirtualHost>

Usando o OS X 10.10 atualmente.

    
por sidyll 20.12.2016 / 15:38

1 resposta

2

Conforme determinado nos comentários acima, a diretiva DirectorySlash controla esse comportamento específico do Apache e o rewriterule não causou isso. Esta diretiva é padronizada para on . Se você defini-lo como desativado , quando um URI mapeado para um diretório no sistema de arquivos for solicitado sem uma barra final, o Apache não redirecionará o pedido para um com uma barra final.

Mais informações na documentação aqui: link

    
por 21.12.2016 / 08:31