2011-05-11 2 views
3

Lorsque je l'utilise dans mon fichier htaccess:problème .htaccess avec Regex redirect

RewriteCond %{HTTP_HOST} ^site\.com$ [NC] 
RewriteRule ^(.*)$ http://www.site.com/ [R=301] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.+)$ $1.php [NC,L] 

Si vous allez à site.com sans www redirige vers www.site.com/.php au lieu de www.site. com.

Des pensées?

Merci!

Répondre

1

Je fini par fixer en ajoutant 1 $ à RewriteRule^(. *) http://www.site.com/ $ 1 $ [R = 301, L]

Merci pour votre aide.

1

Peut-être que c'est le cache du navigateur de votre ancien .htaccess? Essayez de vider le cache ou utilisez un autre navigateur (ou peut-être une navigation Priavte).

+0

Je l'ai fait je pense qu'il a quelque chose à voir avec ce RewriteCond% {SCRIPT_FILENAME}! -f RewriteRule^(. +) $ $ 1.php [NC, L] –

1

Je pense qu'à la racine, SCRIPT_FILENAME serait "/", ce qui ne serait pas considéré comme un fichier valide et déclencherait l'erreur! -f provoquant l'application de la règle.

Puisque le/est un personnage pris par le regex, il va réécrire à www.site.com/.php

+0

Alors, comment puis-je résoudre ce problème? –

+0

Je pense que cela accomplirait ce que vous cherchez? RewriteCond% {SCRIPT_FILENAME}! -d RewriteCond% {SCRIPT_FILENAME}! -f RewriteRule^(. +) $ $ 1.php [NC, L] –

1

Essayez d'ajouter « dernier » à la règle en ajoutant «L »:

RewriteRule ^(.*)$ http://www.site.com/ [R=301,L]