HTTP 404 nach mod rewrite

Hallo!

Ich versuche seit längerer Zeit verzweifelt,
URL Rewriting in meiner .htaccess-Datei für ein Projekt mit dem Zend Framework zu konfigurieren.

Verzeichnisstruktur des Root-Verzeichnisses:

  • application/ (hier liegen die Models etc.)
  • public/
    Verzeichnisstruktur des public-Verzeichnisses:
  • .htaccess
  • index.php
  • images/
  • scripts/

Meine .htaccess-Datei enthält folgende Zeilen:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Wenn ich den Ordner „public“ oder die index.php direkt aufrufe,
funktioniert alles ganz normal,
aber wenn ich zB „http://www.meineurl.net/public/test/“ aufrufe,
werde ich nicht zur index.php weitergeleitet,
sondern es kommt eine HTTP-Error 404 Meldung.
Mir ist klar,
dass dieser Ordner nicht existiert,
aber ich müsste doch weitergeleitet werden.
Am Anfang dachte ich,
dass mod rewrite vielleicht deaktiviert sein könnte,
aber als ich versucht habe statt auf die index.php auf zB Google weiterzuleiten,
hat alles funktioniert.
Das verwirrende für mich an der ganzen Sache ist,
dass sich „http://…/public/index/something/“ aufrufen lässt aber http://…/public/do/something/" nicht.
Bei jedem Aufruf eines virtuellen Ordners (außer „index/“) erhalte ich eine „Seite nicht gefunden“-Fehlermeldung.

Ich hoffe,
dass mir jemand weiterhelfen kann.

Vielen Dank im Voraus!

Daten zum Webserver:
Apache-Version: 2.2.3
PHP-Version: 5.2.9
Loaded Modules enthält mod_rewrite

Verzeichnisstruktur des Root-Verzeichnisses:

  • application/ (hier liegen die Models etc.)
  • public/
    Verzeichnisstruktur des public-Verzeichnisses:
  • .htaccess
  • index.php
  • images/
  • scripts/

Meine .htaccess-Datei enthält folgende Zeilen:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Wenn ich den Ordner „public“ oder die index.php direkt
aufrufe,
funktioniert alles ganz normal,
aber wenn ich zB „http://www.meineurl.net/public/test/
aufrufe,
werde ich nicht zur index.php weitergeleitet,
sondern es kommt eine HTTP-Error 404 Meldung.

doch glaub schon oder ?

nur gibt es keine http://www.meineurl.net/index.php
jedenfalls sehe ich dort keine.

sondern nur eine http://www.meineurl.net/public/index.php
was gleichbedeuten ist meist mit http://www.meineurl.net/public/

ich freg mich also wo dein server root ist (welches nicht unbedingt der FTP root sein muss) ist.

scheint wohl auf dem ordner über public zu sein und ist keine index.php

Aufjedenfall ist es bei dir ein einzelfall, die anderen nehmen das auch so :smile: nur hat warscheinlich keiner Public ordner in der URL sondern direct den http://www.meineurl.net/ root auf var/www/public/

wie gesagt vermutung :smile:

vielleicht gerade ne ungünstige konstellation von root und verzeichniss.

denn wenn es die seite / verzeichniss / datei gibt macht ers ja auch richtig und zeigt sie dir an , also public/ = public/index.php , und public/index.php direct , und bei allen anderen landest du auf der rewrite rule bei ergo /index.php du musst aber nach /public/index.php

versuch mal

RewriteRule ^.*$ public/index.php [NC,L]

-) oder mach ne domain dafür die bei /public startet , also

http://public.www.meineurl.net/
root path …/public :smile:

OT^2: move mal nach Server / Apache
passt hier nicht hat nüx mit PHP zu tun

Hallo!

Vielen Danke für die Antwort!

Der Fehler lag wirklich in der .htaccess.

Ich habe jetzt
RewriteRule ^.*$ index.php [NC,L]
durch
RewriteRule ^.*$ http://www.meineurl.net/public/index.php [NC,L]
ersetzt und es funktioniert.

Danke für den Tipp!