1Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1067
1067
EMPFEHLEN
-
07.02.12 21:42 #1
Rookie
- Registriert seit
- May 2011
- Beiträge
- 5
Hallo liebe Community,
ich suche seit Stunden um eine Lösung für ein Modrewrite-Problem. Leider gab Google noch eine Lösung
Code :1 2 3 4
RewriteEngine on RewriteRule ^ajax/(.+).php$ ajax.php?page=$1 [L,QSA] RewriteRule ^cron/(.+).php$ cron.php?page=$1 [L,QSA] RewriteRule ^([^ajax/]+)\.php$ index.php?page=$1 [L,QSA]
Der oben genannte Code soll folgendes machen: Alle Anfrage die auf das Verzeichnis ajax/ kommen sollen auf ajax.php?page=$1 umgeleitet werden; alle Anfragen die zum Verzeichnis cron/ kommen sollen auf cron.php?page=$1 umgeleitet werden. Alle anderen Anfragen sollen über index.php?page=$1 geleitet werden (es soll auch z.B. http://domain.de/verzeichniss/datei.php möglich sein und dann auf index.php?page=verzeichniss/datei "umgeleitet" werden).
Mein Lösungsansatz: Ich hätte nun die Regular Expression [^ajax/] um [^cron/] erweitert. Mein Problem ist nur, dass ich nicht weis die man zwei negative Regular Expression in Modrewrite verknüpft. Ich bin auch schon einmal auf [S=x] gestoßen, was meiner Erkenntnis nach die nächsten Abfragen überspringen soll, wenn die Abfrage, wo der "Paramente" angegeben ist, zutrifft. Leider hatte ich auch damit bislang keinen Erfolg.
Des Weiteren wäre mir Ausschluss der beiden Verzeichnisse in der letzen Abfrage (erster Lösungsansatz) lieber, da ich damit besser mein noch in Planung befindlichen Ideen umsetzen könnte.
Ich würde mich über eine Lösung sehr freuen
Viele Grüße
NextOne
-
09.02.12 07:02 #2
Rookie
- Registriert seit
- May 2010
- Beiträge
- 6
Ich habe jetzt keinen Server laufen, bei dem ich das direkt ausprobieren könnte, aber im Prinzip kannst du versuchen den String zunächst auf ajax/ und cron/ zu matchen, um das Ergebnis dann zu negieren. Bei dem mod_rewrite gibt es sowas.
Etwas in der Art hätte ich im Kopf:
Code :1
!.*(ajax/|cron/).*
Durchsucht den String nach ajax/ oder cron/ und das ! negiert dann das Ergebnis. Wenn es vorkommt gibt er false zurück, wenn es nicht drin ist true. Zumindest in der Theorie :P Getestet habe ich es jetzt nicht.Code :1
.*(ajax/|cron/).*
-
09.02.12 17:30 #3
Rookie
- Registriert seit
- May 2011
- Beiträge
- 5
Hallo Vesquar,
leider bringt dein Code nur Fehler. Diese Variante habe ich zuvor auch schon erfolglos aufprobiert...
Hat sonst noch jemand 'ne Idee?
Viele Grüße
Next.One
-
14.02.12 21:11 #4
Rookie
- Registriert seit
- May 2010
- Beiträge
- 6
Was mir gerade eingefallen ist: Willst du alles, was nicht auf ajax/ oder cron/ kommt auf die index.php weiterleiten? Dann könntest du ja einfach eine Regel machen, die genau dies tut und diese als letzte Zeile in die Datei packen:
Code :1
RewriteRule (.*)\.php$ index.php?page=$1 [L,QSA]
Ansonsten hier meine weiteren Gedanken:
Code :1 2 3 4
RewriteEngine on RewriteRule ^ajax/?(.+)?\.php$ ajax.php?page=$1 [L,QSA] RewriteRule ^cron/?(.+)?\.php$ cron.php?page=$1 [L,QSA] RewriteRule !.*(ajax/|cron/).*\.php$ index.php?page=%{REQUEST_URI} [L,QSA]
Das ist das brauchbarste, das ich mit kurzen Tests rausbekommen habe.
Alle Anfragen auf ajax/ und cron/ werden auf die entsprechenden PHPs umgeleitet und alles sonstige geht an die index.php. Allerdings ist REQUEST_URI nicht das, was du haben willst. Mit REQUEST_URI wird der komplette Pfad der Datei inkl. Endung (.php) angegeben. Meinen Verständnis nach, kann man $1 nicht anwenden, da ja nicht gematched wird. Er kriegt in der letzten Zeile ja explizit kein Ergebnis, das durch ! im Wahrheitswert gedreht wird.
Ansonsten würde mich interessieren, was für Fehler mit dem Code passieren. Evtl. habe ich auch nicht alle Fälle abgedeckt, die du haben willst.
-
15.02.12 21:04 #5
Rookie
- Registriert seit
- May 2011
- Beiträge
- 5
Hallo Vesquar,
ersten Danke für deine Hilfe. Der von dir oben genannte Code kann, wie du ja bereits gesagt hast, leider nur REQUEST_URI was wieder ein Konflikt gibt, wenn das Script in einem Unterortern liegt. Ich denke, dass (wenn nicht jemand noch einen genialen Einfall hat) ich den Code so nehme und "die Feinheiten" versuche mit PHP zu lösen.
Nochmals vielen Dank!
Next.One
Ähnliche Themen
-
Regular Expression
Von weber_julian im Forum PHPAntworten: 3Letzter Beitrag: 28.12.11, 16:57 -
[VBS]Regular Expression
Von Dark Ranger im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 19.10.07, 09:59 -
regular expression
Von jenno im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 07.09.06, 11:32 -
Regular Expression
Von time-master im Forum PHPAntworten: 7Letzter Beitrag: 29.01.06, 15:22 -
regular expression
Von hudo im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 26.08.04, 16:37




Zitieren
Login