2013-08-03 5 views
0

J'ai dans mon fichier htaccessRediriger .php pas .php

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

qui permettra aux utilisateurs d'accéder server/login.php comme juste server/login mais comment puis-je faire en sorte que si server/login.php est entré dans la barre d'adresse il redirigera vers server/login.

Mon site obtient des résultats différents plutôt que juste pour une URL à cause de ce problème, merci pour votre effort et votre temps.

Répondre

1

Vous pouvez le faire avec une redirection externe:

RewriteRule ^(.*)\.php$ $1 [R,L] 

Le R-drapeau est une redirection temporaire. Si les choses fonctionnent comme prévu, vous pouvez utiliser R = 301 pour en faire une redirection permanente. Voir the documentation pour plus d'informations. Edit: Avec votre règle actuelle, cela créera une boucle infinie. Si vous exécutez Apache 2.3.9 ou version ultérieure, utilisez l'indicateur END sur votre règle de réécriture interne. Si vous n'êtes pas disposé ou incapable d'utiliser une telle version d'Apache, vous pouvez utiliser l'astuce « THE_REQUEST » pour arrêter une boucle infinie, car cela ne fonctionne que si la demande vient de l'extérieur:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)\.php[\s\?] [NC] 
RewriteRule^%1 [R,QSA,L] 
1

Modifier votre base chemin RewriteBase /path/

RewriteEngine on 
RewriteBase /path/ 

RewriteCond %{THE_REQUEST} \.php 
RewriteRule ^(.*)\.php$ $1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php