[PHP / Apache / Browser] Seite mehrmals aufgerufen?

Astrodan

Gamma Cephei
ID: 119839
L
10 Dezember 2006
1.113
209
Edit: Problem hat sich geändert, neues (altes) Problem ab hier.

Hallo!

Ich habe hier vor mir eine Tabelle, in der ich in einer Spalte zwei Zeilen tauschen will. Da die Spalte dazu Unique ist, muss ich den kleinen Umweg gehen, dass ich einen Wert vorher auf einen nicht existenten Wert setze. Das ganze sieht dann so aus:

Code:
UPDATE `gallery` SET `order` = -1 WHERE `id` = 4;
UPDATE `gallery` SET `order` = 3, `last_edit` = 1233622674 WHERE `id` = 5;
UPDATE `gallery` SET `order` = 4, `last_edit` = 1233622674 WHERE `id` = 4;
(Beispielcode)

Das Feld order ist vom Typ SmallInt.

Im PHP Code werden diese Anweisungen eine nach der anderen direkt hintereinander ausgeführt.
Jetzt ist mein Problem, dass in dieser Kombination dort oben keine einzige Update-Anweisung durchgeführt wird. Also, es findet keinerlei Änderung statt.
Sehr misteriös finde ich dann den Effekt, dass wenn ich obige Updates in PHPMyAdmin kopiere, und sie dort alle gleichzeitig ausführen lasse (obiger Befehle, jeweils mit ; am Ende) funktioniert das Problemlos.

Wenn ich jetzt meinen PHP Code nehme, und eine (beliebige soweit ich das sehe, aber auf jeden Fall wenn ich die dritte..) rausstreiche, werden die anderen beiden Anweisungen ausgeführt - allerdings jede direkt 8 mehrmals n(8 mal). Der PHP Code an der entsprechenden Stelle sieht wie folgt aus:

PHP:
		$query = "UPDATE `%s` SET `order` = -1 WHERE `id` = %d;";
		$result = $this->varDatabaseClass->dbQuery($query, self::CONST_GALLERY_TABLE, $idList[1]);
		if(!$result)
			trigger_error('Gallery::doMoveUp - Moving Action I failed: '.mysql_error(), E_USER_WARNING);
			
		//echo mysql_info()."<br />";
			
			
		$query = "UPDATE `%s` SET `order` = %d, `last_edit` = %d WHERE `id` = %d;";
		$result = $this->varDatabaseClass->dbQuery($query, self::CONST_GALLERY_TABLE, $orderList[1], time(), $idList[0]);
		if(!$result)
			trigger_error('Gallery::doMoveUp - Moving Action II failed: '.mysql_error(), E_USER_WARNING);
			
		//echo mysql_info()."<br />";
		
		$query = "UPDATE `%s` SET `order` = %d, `last_edit` = %d WHERE `id` = %d;";
		$result = $this->varDatabaseClass->dbQuery($query, self::CONST_GALLERY_TABLE, $orderList[0], time(), $idList[1]);
		if(!$result)
			trigger_error('Gallery::doMoveUp - Moving Action III failed: '.mysql_error(), E_USER_WARNING);

$this->varDatabaseClass->dbQuery ist ein dbQuery nach dem Schema des Snippets aus dem Snippet-Thread, $orderList und $idList enthalten jeweils zwei Werte, wie sie auch in den obigen Querys eingesetzt sind. Die Konstante stimmt auch.

So, und was mich jetzt letztlich am meisten fasziniert: Wenn ich alle drei Updates laufen lasse, dann ändert er das Order-Feld nicht. Das last_edit-Feld wird aber in jedem Fall erneuert.
Lasse ich den dritte Query weg, habe ich in einem Feld eine -1 stehen, und im zweiten die neue Order-Nummer.

So.. jetzt die simple Frage: Was mache ich falsch? Ich sitz da jetzt seit zwei Stunden vor, aber ich kriege es nicht hin, dass der alle drei ausführt, bis auf in PHPMyAdmin.. bin total am verzweifeln mittlerweile..
 
Zuletzt bearbeitet:
Klingt einfach nur komisch.

Debugge doch mal an der Quelle: Geh in die DB-Klasse und lass die Query vor mysql_query() ausgeben (schließt Fehler von falschen Variablen u.s.w. aus) und direkt im Anschluss bau eine Ausgabe von mysql_affected_rows() ein und guck dir das an.

phpMyAdmin führt Anweisungen auch eine nach der anderen aus. Es kann also nicht sein, dass "alle gleichzeitig" was anderes liefert, wie eine nach der anderen; oder noch schlimmer, dass nur eins von zwei Feldern in einer Query geändert wird.

Einziges, was das erklären kann, ist Nebenläufigkeit. Bist du nicht allein auf der DB? Arbeiten mehrere von deinen Scripten parallel? Falls ja, musst die Table LOCKen oder die Scripts geeignet synchronisieren.
 
Okay, ich hab das gestern Nacht wohl nicht mehr vollständig hingekriegt, deine Fragen hätte ich von vorneherein beantworten können ;)

Die oben gezeigten Beispielquerys sind direkte echos aus der Database-Klasse.

das mysql_affetcted_rows hatte ich schon da stehen, und zwar an der Stelle, wo aktuell das auskommentierte mysql_info() steht. Bewirken in dem zusammenhang btw. beide das selbe, und sagen mir es wurde eine Reihe geändert..

Die Datenbank liegt lokal auf meinem Rechner zum testen gerade, wenn da noch wer anderes wäre würde ich Angst kriegen. Und ja, ich hab sogar schonmal ein LOCK WRITE davor gesetzt (und ein UNLOCK) dahinter..

Nachtrag:
Um das mal zu ergänzen:
Ich lasse vor dem Ausführen der Querys in PHP aktuell noch einen sinnlosen Text per echo ausgeben, der an und für sich nur den Zweck hat zu überprüfen wo ich mch im Code befinde.
Dieser Text wird sowohl vorher als auch nachher nur einmal ausgegeben.
Wenn ich jetzt alle drei Befehle abarbeiten lasse, dann meldet er keinerlei Fehler.
Wenn ich den letzten auskommentiere, stehen in meiner Logdatei folgende Fehler:

Code:
[10:07:38]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:38]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 686.
		Message: Gallery::doMoveUp - Moving Action I failed: Duplicate entry '-1' for key 3
[10:07:39]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\functions\class.gallery.php, line 694.
		Message: Gallery::doMoveUp - Moving Action II failed: Duplicate entry '2' for key 3
Also meine selbst aufgerufenen Fehlermeldungen, aber in einer viel zu großen Anzahl. Besonders, wenn man bedenkt, dass gerade in diesem Fall eine Änderung der Spaltenwerte stattfindet.

Nachtrag #2: Gerade mal eine Variation ausprobiert:
PHP:
$query = "UPDATE `%s` SET `order` = %d, `last_edit` = %d WHERE `order` = -1";
Also, Ergebnis ist das selbe. Keine Änderung, keine Fehlermeldung. PHPMyAdmin führt die Änderung problemlos durch.

Nachtrag #3: Ich habe jetzt den Unique-Index mal entfernt, und dann mal probiert was passiert wenn ich das oberste Update, also das setzen auf -1 entferne.
Wieder keine Änderung. PhpMyAdmin führts problemlos aus..

Jetzt hab ich auch mal als Benutzer für mein Skript den mysql-root-benutzer angeben, für den Fall, dass es ein misteriöses Problem mit Berechtigungen gibt. Hat auch nix geändert. So gaaaaanz langsam glaube ich, irgendwie geht dsa gar nicht was ich machen will.. da steckt Skynet dahinter oder sowas..

Nachtrag #4: Meine Tabelle: (ohne Inhalt)

Code:
-- 
-- Tabellenstruktur für Tabelle `gallery`
-- 

CREATE TABLE `gallery` (
  `id` int(11) NOT NULL auto_increment COMMENT 'primary key, used to identify gallery',
  `path` varchar(255) collate latin1_general_ci NOT NULL COMMENT 'this field is here to reserve a unique name for identification reasons',
  `parent_id` int(11) NOT NULL default '-1' COMMENT 'defines whether gallery is a subgallery and if, whose it is',
  `name` varchar(255) collate latin1_general_ci NOT NULL COMMENT 'name of the gallery',
  `date` int(11) NOT NULL COMMENT 'date when the gallery was created',
  `last_edit` int(11) NOT NULL default '0' COMMENT 'php timestamp of last edit',
  `description` mediumtext collate latin1_general_ci NOT NULL COMMENT 'description of the gallery',
  `picture` int(11) NOT NULL default '-1' COMMENT 'picture id of the gallerys front picture',
  `order` smallint(4) NOT NULL COMMENT 'integer to define the order of galleries',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `path` (`path`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=10 ;
 
Zuletzt bearbeitet:
Ich würde an Deiner Stelle nicht am Query ansetzen, sondern untersuchen, weshalb der Code 8x ausgeführt wird. Denn, wenn die Daten vorher jedesmal neu eingelesen werden, ist es durchaus logisch, dass bei jeder Durchlaufsanzahl, die glatt durch 2 teilbar ist, wieder der Originalzustand hergestellt wird.
 
Argh.. k, du hast recht.
Ich habe gerade endlich mal den geistesblitz gehabt, dass ich in mein Log hab schreiben lassen, wann die Datei, die dieses ->doMoveUp aufruft includet wird. Und die wird faszinierenderweise 8 mal included. Was aber gar keinen Sinn macht, es gibt nämlich nur eine Include Anweisung -.-

Aber ich werde mal weiter suchen..

Edit: Aktueller Stand: Meine index.php wird 8 mal aufgerufen... und ich hab keinerlei Ahnung warum. Muss leider wegm schau mal heut Abend weiter..
 
Zuletzt bearbeitet:
Okay, neuer Post, neues Glück. Hat sich nämlich einiges geändert. Ich kopiere hier ein ICQ Gespräch rein, deswegen kanns was komisch klingen, aber der Inhalt beschreibts ganz gut:

Schema ist: url: https://localhost/eclipse/dreho.de/admin/?site=impressionen
so, die index.php stellt jetzt fest, dass $site = impressionen ist
und includede die gallery.php
und in der wird dann als default wert (kein $sub) gallery_overview.php included
in der index.php steht
Code:
trigger_error('test', E_USER_WARNING);
in der gallery_overview.php steht
Code:
trigger_error('Bound gallery_overview to be shown', E_USER_WARNING);
beides wird logischerweise an die loggin klasse weitergeleitet
so.. jetzt die aufrufe:
Firefox:
Code:
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:23]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown

Opera:
Code:
[19:59:38]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:38]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown

Internet Explorer:
Code:
[19:59:57]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test
[19:59:57]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\pages\gallery_overview.php, line 2.
		Message: Bound gallery_overview to be shown
[19:59:57]:	E_USER_WARNING occured in D:\Programme\System\Xampp\htdocs\eclipse\dreho.de\admin\index.php, line 11.
		Message: test

Mein Errorlog wird von meiner eigenen Klasse erstellt, die bisher aber immer einwandfreie Arbeit geleistet hat. sie fängt nur die fehler ab, und schreibt sie dann auf.
Wenn ich eine andre Url als obige aufrufe, dann läuft es auf jeden Fall beim Firefox so, dass nur die Nachricht aus der index.php einmal (also korrekt) ausgegeben wird.

So, für den Fall dass es interessant ist, noch zwei .htaccess dateien:

/eclipse/dreho.de/:
Code:
# Ausgewäte Seite, falls nur der Ordner angegeben wird
DirectoryIndex index.php

# Fehlerseite
# Der Pfad zur index.php muss angepasst werden
# ErrorDocument 404 /eclipse/caris-gmbh.de/index.php?site=404

# für aktuelles projekt
# ErrorDocument 404 /neu/index.php?site=404

# Einstellungen zur Strukturierten Darstellung der URL
#
Options -MultiViews
RewriteEngine on
# Passe diese Zeile dem Verzeichnis an, in dem die index.php liegt
# Beispiel: https://www.example.com/dieses/verzeichnis/index.php
# RewriteBase /dieses/verzeichnis/
RewriteBase /eclipse/dreho.de/

RewriteRule ^([a-z]*)$ index.php?site=$1 [L]
RewriteRule ^([a-z]*)/$ index.php?site=$1 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)$ index.php?site=$1&sub=$2 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)/$ index.php?site=$1&sub=$2 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)/([0-9]+)$ index.php?site=$1&sub=$2&id=$3 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)/([0-9]+)/$ index.php?site=$1&sub=$2&id=$3 [L]

/eclipse/dreho.de/admin/:
Code:
# deactivate rewrite engine for admin menu 
RewriteEngine Off

Und jetzt.. Hilfe?? 8O

Update:
Wenn ich sämtliche Bilder auskommentiere, wirds im FF nur noch einmal aufgerufen.. ich suche weiter..

Update #2:
So, ich glaub ich hab ds Problem:

Aus irgendeinem unerfindlichen Grund habe ich im Quellcode image-Tags mit src="". (Das ist ein anderes Problem, das zu lösen sollte einfacher sein).
Meine Interpretation ist, dass der FF jetzt versucht für jedes Bild (es gibt 7 solche) die aktuelle url aufzurufen und da nen Bild raus zu lesen. Der Opera beschließt, dass da nen fehler vorliegt und die Bilder nicht existieren (richtig!). Der Internet-Explorer lädt den Ordner, in dem ich mich gerade befinde, cached den, und fügt das "bild" dann in jedes img ein..

so ein scheiß.., das hat mich jetzt 4-5Stunden gekostet oO
 
Zuletzt bearbeitet:
Ehm mal so ein paar Fragen:
1. Wieso sind deine RewriteRules alle doppelt?
2. Schreibt man nicht immer die längste zu erst und die kürzeste zuletzt??? So habe ich es jedenfals mal gelernt.

So und nun zu Deinem Prob mit den Bildern:
Eines der folgenden Ausdrücke vor deine RewirteRules:
Code:
RewriteCond %{REQUEST_URI} !(\.jpg|\.gif|\.png)$ [NC]
RewriteCond %{REQUEST_URI} !^(\/BILDERORDNER|\/BILDERORDNER_2) [NC]
Kann man ggf. auch mit [OR] hinter der ersten verknüpfen.
 
1. Ja, das frag ich mich auch immer, warum das nötig war.. aber er hats vorher manchmal nicht getan. Zugegeben, hab ich auch immernoch meine Probleme mit den rewrite-Rules..

2. Äh.. hm, klingt einerseits logisch, andererseits - warum sollte man? ich suche gerade nach einem guten Grund..

Zu deinen Befehlen: Super, sowas kann ich echt gebrauchen, danke! Nur - in dem Fall behebt es das Problem ja nicht, da die Url leer war, d.h. es wurde gar keine Datei mit einer der Endungen angefordert ;)
 
Ach so Du hast leer Pfade bei den Image Einbindungen????


Zu 2. noch:
Ich habe es so gelernt das wenn man diese Rules hat:
Code:
RewriteRule bla/blubb/(muhhh) index.php?q=$1 [L]
RewriteRule bla/blubb/(muhh)/(meckmeck) index.php?q=$1&order=$2 [L]
Und nun die URL site/bla/blubb/muhh/meckmeck könnte er bei der ersten abbrechen, weil er muhh in der ersten Rule gefunden hat und Du mit dem LAST Flag Ihm mitgeteilt hast, "keine weiteren Rules anwenden".

Was anderes ist es wenn man mit ^ und $ in den Rules arbeitet, aber dazu sehe ich kaum Verwendung/Zweckmäßigkeit, weil ich fast nur ^genutzt haben, bzw. war ich manchmal zu faul dazu. :)

Also das ist nur ein Hinweis, vielleicht hat sich daran auch schon wieder was geändert, das weiß ich nicht, habe seit längerem nicht mehr gemacht, bzw. mache es nun anders.
 
Zuletzt bearbeitet:
Ach so Du hast leer Pfade bei den Image Einbindungen????
Ja, das war ein Fehler, den ich später lösen wollte, da ich an dem Skript eh noch arbeite, und er sich später von allein behoben hätte.. wusste ja nicht, dass der zu so Problemen führt..


Zu 2. noch:
Ich habe es so gelernt das wenn man diese Rules hat:
Code:
RewriteRule bla/blubb/(muhhh) index.php?q=$1 [L]
RewriteRule bla/blubb/(muhh)/(meckmeck) index.php?q=$1&order=$2 [L]
[CODE] Und nun die URL site/bla/blubb/muhh/meckmeck könnte er bei der ersten abbrechen, weil er muhh in der ersten Rule gefunden hat und Du mit dem LAST Flag Ihm mitgeteilt hast, "keine weiteren Rules anwenden".

Was anderes ist es wenn man mit ^ und $ in den Rules arbeitet, aber dazu sehe ich kaum Verwendung/Zweckmäßigkeit, weil ich fast nur ^genutzt haben, bzw. war ich manchmal zu faul dazu. :)[/QUOTE]
Ja, der teil klingt logisch für mich. ich habe mich mit meinem Pseudowissen über .htaccess aber nur an Beispiele rangewagt, und die in mühevoller Arbeit so editiert, dass sie meinen Anforderungen entsprechen. Denn auch RegExp ist nicht gerade etwas, was mir so aus den Finger rutscht, zum großen Teil sicher mangels Übung.
Naja, und in den Beispielen war halt ein $ am Ende, und danach ist die reihenfolge egal. Wenn man es allerdings weglässt, und die reihenfolge umdreht dürfte es möglich sein (denk ich) die doppelte Aufführung der Bedingungen zu entfernen.

Aber: Never change a running System, ich habe gerade durch Klausuren kaum Zeit, aber eine Webseite die ich fertig stellen muss. Wenn das alles vorbei ist, werde ich mich vielleicht nochmal an die htaccess setzen, den ich muss zugeben, wirklich gefallen tut mir die nicht..
 
Joar optimieren kann man immer^^.

Aber etz seh ich grad warum die alle doppelt hast, die hast die Möglichkeit eines Slashes am Ende gesetzt.

Wenn mich nicht alles täuscht könnte das so aber auch klappen:
Code:
RewriteRule ^([a-z]*)/?$ index.php?site=$1 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)/?$ index.php?site=$1&sub=$2 [L]
RewriteRule ^([a-z]*)/([0-9a-z_\-]*)/([0-9]+)/?$ index.php?site=$1&sub=$2&id=$3 [L]

Das .? bedeutet "Kein oder ein beliebiges Zeichen. "

Steht auch alles hier, bzw hier ist alles detaillierter.

Für Dich könnte das noch sehr interessant sein, ich meine wenn Du mal Zeit hast ;).

Ansonsten noch viel Spaß und Erfolg, wenn was ist kannst Du a melden, oder wie immer hier ;).

Gruß strolch00

*edit
Noch eine Anmerkung zu deinen letzten beiden Rules, geh sicher das du nur Kleinschreibung in den URL´s nutzt, oder setzte noch das NC Flag für Case-Sensitive Ignorierung.
#Die * würde ich durch + ersetzen, weil es in meinem Augen so kaum Sinn ergibt.
 
Zuletzt bearbeitet:
Super, danke. Werde ich mir bei Gelegenheit mal anschaun.

Das mit dem ? hinter dem Slash - ich mein ich hätt das schonmal probiert. Aber wer weiß.. das NC ist eine gute Idee, das wäre dann aber [L,NC], oder? Oder kann ich das [L] weglassen?


Edit: Soll ich dem Thread eigentlich irgendeinen sinnvollen Titel geben? Ich hab jetzt dreimal das Thema gewechselt, alles basierend auf einem Problem ;). Mittlerweile sind alle Titel falsch.. ;)
 
Nein das ist richtig sollte [NC,L] sein, das L sollte man auf jedenfall beibehalten.
Lies noch meinen letzten Edit Satz von oben, und Schau Dir die Definition von * und + im ersten Link an, dann weist Du warum.

*edit

Könnte man denke ich in "[PHP/ModRewrite]Browser-/Page Request Problem" nehmen, oder sowas in der Art, da Dein Fehler ja von ModeRewite her kommt und es daran liegt wie die Browser die Bilder anfordern. Aber frag mal theHacker er ist ja Mod und wird sicher was passendes finden.
 
Hm, ja.. die Defintionen kenn ich gerade noch so, ich bin nur nicht der held wenns ums zusammensetzen der RegExps geht. und ich sehe ein, dass ein //bla vielleicht möglich, aber zugegeben nicht sonderlich sinnvoll sein mag ;)