Autor Beitrag
GruppeCN
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 322



BeitragVerfasst: Sa 03.09.11 12:54 
Moin moin zusammen,
vielleicht sind hier ja auch ein paar Apache-Spezis dabei, die mir bei folgendem Problem weiterhelfen können:

Habe z.B. folgende URLs:
/ajax/test
/ajax/test/56
/ajax/test/42

Dabei wird das ganze per mod_rewrite auf mein Skript verwiesen, wenn unter der URL keine Datei existiert.

Wenn die URL ohne ID (also /ajax/test) aufgerufen wird, speichert das Skript seine Ausgabe in die Datei /ajax/test (ohne Dateiendung!) - beim nächsten Aufruf der URL existiert die Datei dann und wird direkt von Apache ausgeliefert, ohne dass das Skript bemüht werden muss. Das funktioniert soweit gut.

Allerdings kriege ich (sobald diese Datei existiert) bei einer URL MIT ID auf einmal einen 404 Fehler.
D.h. es existiert eine Datei /ajax/test und ich rufe auf: /ajax/test/123 und erhalte einen 404 Fehler.

Weiß da jemand, was das Problem sein könnte?

Der Vollständigkeit halber noch meine ModRewrite Anweisungen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]



Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am So 15.07.2012 um 12:50

_________________
Warum sind die Sachen, die du suchst, immer da, wo du zuletzt nachsiehst?
Weil du aufhörst zu suchen, wenn du sie gefunden hast.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 03.09.11 13:12 
Existierende Dateien haben vorrang vor Redirects durch mod_rewrite. Zudem ist

/some/url/index.php/abc

durchaus eine gültige URL und führt /some/url/index.php aus, wobei /abc als QUERY_STRING an das CGI weitergereicht wird. Ist index.php eine reguläre Datei, wird IIRC /abc verworfen. Woher der 404 bei Dir jetzt kommt, wüsste ich grad nicht. Der Apache bietet aber für mod_rewrite eine Möglichkeit das Debugging der Pfad-Auflösung stark zu verbosieren ;-) Schau mal, ob Du dann was findest.

In der Regel gilt aber: Alles was man mit mod_rewrite umschreiben will, sollte nicht real im logischen Namensraum bereits existieren.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
GruppeCN Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 322



BeitragVerfasst: So 04.09.11 16:22 
Okay, vielen Dank erstmal! Wenn es eine Dateiendung gibt, dann stimmt das was du sagtest, dann wird bei index.php/hallo die index.php ausgeführt. Aber ohne Dateiendung scheint das nicht so zu sein, denn sonst würde meine Datei /abc/test einfach ausgegeben werden, wenn ich /abc/test/123 aufrufe, statt den 404 Fehler zu produzieren. Ich werde mich am Montag mal ausführlicher mit RewriteLog beschäftigen, aber das scheint ja "by design" so zu sein, dass die RewriteCond in so einem Fall auf den Dateinamen mit der Option -f anspricht.

_________________
Warum sind die Sachen, die du suchst, immer da, wo du zuletzt nachsiehst?
Weil du aufhörst zu suchen, wenn du sie gefunden hast.