Redirecionando http://www.example.com/index.html para http://www.example.com/ (sem loop)

4

Por razões estéticas (eu prefiro quando há um mapeamento um-para-um estrito entre URL e páginas), eu não gosto do fato de que link e link produzem o mesmo conteúdo com dois URLs diferentes. Eu gostaria de ter link como o canônico.

A solução óbvia:

Redirect permanent /index.html /

está errado (loop infinito).

Uma solução melhor? Parece surpreendentemente difícil.

    
por bortzmeyer 25.08.2010 / 10:47

6 respostas

2

Minha solução (que parece funcionar, então eu a aceitei), inspirada na resposta da PP, é:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/index\.html$
RewriteRule .* http://www.example.com/ [R=302,L]

Qualquer solução não modrewrite? Eu tive que ativar um novo módulo do Apache, que eu tento evitar.

    
por 25.08.2010 / 11:39
2

Experimente um RewriteCond de mod_rewrite :

RewriteEngine On
RewriteCond %{QUERY_STRING} !^/$
RewriteRule /index.html / [R]

Isso diz que se a string de consulta não for / , então, reescreva /index.html como / (não deve fazer loop).

    
por 25.08.2010 / 10:54
1

RedirectMatch ^/index.html$ http://www.example.com/

    
por 25.08.2010 / 11:00
1

Por que não definir o DirectoryIndex como algo diferente, por exemplo, impredictable.html, e nomear o arquivo de índice de maneira semelhante?

DirectoryIndex unpredictable.html
Redirect permanent /index.html http://yoursite/

Você nunca precisa expor o valor DirectoryIndex escolhido.

Observe que o último argumento a ser redirecionado precisa ser uma URL completa, não apenas um fragmento de caminho.

    
por 25.08.2010 / 11:17
1

Uma solução não mod_rewrite ... Na verdade, joschi quase tinha, mas por algum motivo (pouco claro para mim) você tem que kludge em torno do loop infinito:

RedirectMatch permanent ^/index\.html$ http://www.example.com/
AliasMatch ^/$ /var/www/index.html
    
por 19.09.2010 / 14:24
0
RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/index\.html$
RewriteRule .* http://www.example.com/ [R=302,L]

solução perfeita

    
por 03.01.2017 / 07:56