Redirecionar caminhos inválidos usando .htaccess (por exemplo, "home.php / xyz")

1

Estou executando o Apache 2.4.2 no meu servidor local. O arquivo .htaccess do meu website é o seguinte:

DirectoryIndex home.php
Options -Indexes
ErrorDocument 404 /404.php

Isso funciona muito bem ao exibir uma página HTTP 404 quando você tenta acessar um arquivo inexistente no navegador, mas não está mostrando a página de erro ao acessar arquivos existentes usando a seguinte sintaxe:

http://localhost/<FileName>.php/<AdditionalCharacters>

Por exemplo, se eu for para home.php/xyz , a página home.php carrega, mas todos os links relativos no HTML são quebrados. Eu não tenho um diretório home.php no meu servidor! O que está acontecendo?

Existe uma diretiva ou regra que eu possa adicionar ao meu arquivo .htaccess para parar esse comportamento e lançar um erro HTTP 404?

    
por iglvzx 26.01.2013 / 05:04

1 resposta

1

Este é um recurso chamado "path_info" e é comumente usado para executar sites inteiros a partir de um único script CGI (quando alternativas melhores, como mod_rewrite, não estão disponíveis).

Se o URL fizer com que um script CGI seja tratado como um diretório, o Apache executará esse script normalmente, mas fornecerá a ele os componentes extras do caminho na variável de ambiente PATH_INFO . Muitos mecanismos de wiki usam esse recurso. Por exemplo, você pode acessar o link dessa maneira.

Isso pode ser controlado usando a configuração AcceptPathInfo .

    
por 26.01.2013 / 12:33