2009-08-04 10 views
0

Je pense que mon fichier htaccess qui utilise mod_rewrite provoque l'appel de mes pages plus d'une fois. Quelqu'un peut-il voir si cela pourrait arriver avec mon fichier htaccess actuel? Ou s'il y a même une possibilité? Cela se produit uniquement sur la page view.php (d'après ce que j'ai vu).Mon fichier htaccess provoque-t-il plusieurs appels sur une page?

# REWRITE DEFAULTS 
RewriteEngine On 
RewriteBase/

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

# /view.php?t=h5k6 externally to /h5k6 
RewriteCond %{THE_REQUEST} ^GET\ /view\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ 
RewriteRule ^view\.php$ /%2? [L,R=301] 

# /h5k6 internally to /view.php?t=h5k6 
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L] 

Ce qui se passe dans mes scripts PHP est qu'ils sont appelés plus d'une fois ou à tout le moins une fonction est appelée plus d'une fois, même si je me suis assuré qu'elle soit appelée une fois!

Merci à tous

+0

Avez-vous une réponse dans votre navigateur? Il semble presque que ces règles provoquent une boucle circulaire et ne courent jamais votre page. – bmb

+0

Oui, les pages s'affichent normalement pour moi, mais il semble que de nombreuses occurrences sont faites sur la page même si une seule requête a été faite. – Abs

+0

Bon, je vois comment la boucle est évitée avec THE_REQUEST. – bmb

Répondre

1

Ces conditions et règles mod_rewrite n'entraînent pas l'appel d'un script plus d'une fois. Les règles elles-mêmes peuvent être appelées plusieurs fois. Chaque fois qu'une URL est réécrite avec succès dans une nouvelle requête, la nouvelle requête invoque à nouveau les règles. Cependant, cela s'arrêtera dès qu'une ressource "réelle" (script, page web, etc.) est identifiée et récupérée une seule fois.

Y at-il d'autres références sur votre page qui feraient une autre demande? Par exemple, une balise IMG amènera un navigateur à faire une autre requête. Ces demandes entraîneront l'exécution des règles à nouveau. Il semble que quelque chose avec un point (par exemple, image.jpg) ne correspond pas à vos règles, mais quelque chose d'autre pourrait le faire.

D'autres choses à rechercher sont CSS et les scripts qui sont référencés.

0

Sans la lecture de votre code collé, je veux dire non. le htaccess parcourt chaque ligne et s'arrête à la première règle qui correspond à la requête

Questions connexes