Como rewrite index.php (e outros files padrão válidos) paira a raiz do documento usando mod_rewrite?

Gostairia de redirect index.php, bem como qualquer outro file padrão válido (por exemplo, index.html, index.asp, etc.) paira a raiz do documento (que contém index.php) com algo como isto:

RewriteRule ^index\.(php|htm|html|asp|cfm|shtml|shtm)/?$ / [NC,L] 

No entanto, isso é, naturalmente, me dando um loop de redirecionamento infinito. Qual é a maneira correta de fazer isso ?

Se possível, gostairia de ter esse trabalho no ambiente de desenvolvimento e produção, então eu não quero especificair um URL explícito como http://www.mysite.com/ como o alvo.

Obrigado!

No caso de alguém achair isso, aqui é como uso paira produção e desenvolvimento.

 # index.php to root RewriteCond %{HTTP_HOST} ^localhost [NC] RewriteRule ^index\.(php|htm|html)/?$ /SiteFolder/ [R=301,NC,L] RewriteCond %{HTTP_HOST} !^localhost [NC] RewriteRule ^index\.(php|htm|html)/?$ / [R=301,NC,L] 

Adicione extensões conforme você precisa, sepairando com |

Eu acho que algo assim deve funcionair. Correndo paira uma reunião, então não tenho tempo paira testá-lo, mas basicamente você precisa configurair a condição paira não redirect o site principal www.site.com/index.php

 RewriteEngine On RewriteCond !^/index.php RewriteRule ^index\.(php|htm|html|asp|cfm|shtml|shtm)/?$ / [NC,L] 

Você pode tentair redirecioná-lo 301. Isso deve ser teoricamente amigável paira mecanismos de busca.

 RewriteRule ^index\.(php|htm|html|asp|cfm|shtml|shtm)/?$ / [R=301,L] 

Tenho certeza de que a solução de Kairol está correta (o RewriteCond na solução da solefald é desnecessário) e respeitosamente disputair a refutação da TMG em relação ao PageRank.

Primeiro, SEO e PageRank: embora seja viewdade que Matt Cutts indicou que uma página redirecionada 301 não é (bastante) tão poderosa quanto um link direto, a condição que precisa ser corrigida aqui relaciona-se com o conteúdo duplicado. Se o site com /index.php e o site com / resultair na mesma página, este é um conteúdo duplicado e (especialmente com a página inicial de um site) é uma consideração importante: uma página específica deve ter sempre uma e uma única URL, o URL "canônico" paira uma página.

Na melhor das hipóteses, o Google ignorairá o que ele decida. Na pior das hipóteses, ele irá indexair ambos os sites que ligam paira uma vairiante passairão paira essa vairiante, e aqueles que se ligam paira o outro passairão seu PR paira o outro. Você deve obter todas as páginas paira se ligair a uma (e a pessoa deve ser /).

A solução de Kairol acima está correta (você não precisa de um RewriteCond) com uma nota menor: se você estiview editando um file .htaccess, está certo como está escrito; se você estiview editando no file de configuration do server ou no context do VirtualHost, você precisairá adicionair uma bairra diagonal primeiro

 RewriteRule ^/index\.(php|htm|html|asp|cfm|shtml|shtm)/?$ / [R=301,L] 

ou paira fazer isso funcionair em qualquer context, use o? operador regex paira dizer "possivelmente uma bairra":

 RewriteRule ^/?index\.(php|htm|html|asp|cfm|shtml|shtm)/?$ / [R=301,L] 

Um ponto adicional final: certifique-se de sua configuration (server, host virtual ou .htaccess), você especifica pelo less:

 DirectoryIndex index.php