2009-08-04 8 views
0

Ich denke, dass meine Htaccess-Datei, die mod_rewrite verwendet, dazu führt, dass meine Seiten mehr als einmal aufgerufen werden. Kann jemand sehen, ob das mit meiner aktuellen htaccess-Datei passieren könnte? Oder wenn es überhaupt eine Möglichkeit gibt? Dies geschieht nur in der view.php-Seite (von dem, was ich gesehen habe).Fängt meine Htaccess-Datei mehrere Aufrufe auf einer Seite an?

# 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] 

Was in meinen PHP-Skripten geschieht, ist, dass sie mehr als einmal oder zumindest eine Funktion als einmal aufgerufen wird noch genannt werden, obwohl ich sicher gemacht habe, seine einmal aufgerufen werden!

Dank all

+0

Erhalten Sie eine Antwort in Ihrem Browser? Es scheint fast so, als würden diese Regeln eine Kreisschleife verursachen und niemals Ihre Seite laufen lassen. – bmb

+0

Ja, die Seiten werden normalerweise für mich angezeigt, aber es scheint, dass viele Treffer auf der Seite gemacht wurden, obwohl eine einzige Anfrage gemacht wurde. – Abs

+0

Okay, ich sehe, wie die Schleife mit THE_REQUEST vermieden wird. – bmb

Antwort

1

Diese mod_rewrite-Bedingungen und -Regeln führen nicht dazu, dass ein Skript mehr als einmal aufgerufen wird. Die Regeln selbst können mehrfach aufgerufen werden. Jedes Mal, wenn eine URL erfolgreich in eine neue Anfrage umgeschrieben wird, ruft die neue Anfrage die Regeln erneut auf. Dies wird jedoch beendet, sobald eine "echte" Ressource (Skript, Webseite usw.) einmal identifiziert und abgerufen wird.

Gibt es andere Referenzen auf Ihrer Seite, die eine andere Anfrage stellen würden? Zum Beispiel veranlasst ein IMG-Tag, dass ein Browser eine weitere Anfrage macht. Diese Anfragen führen dazu, dass die Regeln erneut ausgeführt werden. Es sieht so aus, als ob etwas mit einem Punkt (z. B. picture.jpg) nicht mit deinen Regeln übereinstimmt, aber möglicherweise etwas anderes.

Andere Dinge, auf die Sie achten sollten, sind CSS und Skripte, auf die verwiesen wird.

0

Ohne Ihre eingefügten Code zu lesen, möchte ich nicht sagen. htaccess wird durch jede Zeile ausgeführt und stoppt bei der ersten Regel, die der Anforderung entspricht.

Verwandte Themen