Apache htaccess RewriteRule para remover a barra final; Loop infinito?

1

Eu uso o seguinte em .htaccess ( mod_rewrite ) para remover a barra final de meus URLs:

RewriteRule ^([a-z0-9_-]+)/$ $1 [L,NC,R=301]

Naturalmente, como a classe de caracteres não corresponde a uma barra, isso funciona bem para links como some_page/ , mas não article/some_page/ .

Se eu adicionar uma barra à classe de caractere para criar [a-z0-9_/-] , recebo um loop infinito ao tentar carregar a página. Eu também tentei fazer o + não-ganancioso usando +? , mas isso também não funcionou; tampouco remover o redirecionamento R=301 .

(Se isso faz diferença, a página a carregar, /article/some_page/ é realmente /article/some_page/index.html , eu só quero que apareça como /article/some_page .)

    
por Chris Poole 24.10.2011 / 12:53

1 resposta

1

If it makes a difference

Sim, sim. O Apache (mod_dir) enviará de volta um redirecionamento se você passar um URL que mapeia para um diretório sem um '/', por exemplo,

[colinm@example ~]$ curl -I http://localhost/somedir
HTTP/1.1 301 Moved Permanently
Date: Mon, 24 Oct 2011 11:48:37 GMT
Server: Apache/2.2.3 (Red Hat)
Location: http://localhost/somedir/
Content-Type: text/html; charset=iso-8859-1
    
por 24.10.2011 / 13:50