2012-03-23 6 views
0

Ich entwickle eine API mit Luracast Restler-Bibliothek. Alles, was ich suche, ist, dass die index.php von meinen URLs "versteckt" wird, um den REST-API-Standards zu entsprechen. HINWEIS !: Ja, ich habe mod_rewrite aktiviert, und ja, ich habe die .htaccess-Datei im Verzeichnis. Ich hatte absolut kein Problem, dies auf meinem Rechner zu erledigen, aber wenn man es in eine Produktionsumgebung für einige grundlegende Tests verschiebt, scheint die .htaccess-Datei anders zu handeln, weil index.php wieder in der URL benötigt wird!Luracast Restler .htaccess überschreibt keine Anfragen mit mod_rewrite aktiviert

Sowohl meine Entwicklungsmaschine als auch meine Produktionsmaschine laufen Windows. Beide verwenden mehrere virtuelle Hosts. Beide haben mod_rewrite aktiviert.

Meine .htaccess-Datei ist buchstäblich das mitgelieferte Beispiel:

DirectoryIndex index.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ index.php [QSA,L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 
<IfModule mod_php5.c> 
    php_flag display_errors Off 
</IfModule> 

Wir haben identische Verzeichniseinstellungen in httpd.conf:

<directory "C:\www"> 
    Options FollowSymLinks -Includes -ExecCGI -Indexes -SymLinksIfOwnerMatch 
    order allow,deny 
    Allow from all 
    AllowOverride All 
</directory> 

Und diese Konfiguration funktioniert auf meiner Entwicklung Maschine. Wenn ich es in die Produktion verschiebe, benötigt es index.php in der URL, damit es die Anfrage an meine index.php-Datei liefert. Wenn ich die index.php von der URL entferne, bekomme ich eine 404 von Apache (keine Antwort von Restler). Ich habe auch diesen Fehler in den Apache-Logs:

File does not exist: C:/www/api_website_com/public/classname/function 

Es ist mein Verständnis, dass diese .htaccess sollte meine HTTP-Anfragen direkt an index.php und nicht auf der Suche nach der URL werden Umschreiben, als ob es sich um eine Datei waren. Hat jemand irgendwelche Gedanken? Es muss etwas Einfaches sein, das ich übersehe.

Beachten Sie auch, dass ich RewriteLog nicht aktivieren kann, da ich keinen Zugriff auf die httpd.conf des Produktionsservers habe.

+0

[Dieser Thread] (https://github.com/Luracast/Restler/issues/36) in Luracast Restler Issues Seite kann etwas Licht werfen. Hör zu! – Luracast

+0

Leider konnte keiner von ihnen das Problem lösen. Es sieht so aus, als ob das Neuschreiben, das alle Anfragen auf index.php verweist, die Anfragen nicht richtig umschreibt - Apache sucht immer noch nach dem tatsächlichen Dateipfad. – Kevin

+0

Gelöst. Anscheinend hat jemand die folgende Zeile in httpd.conf - "AccessFileName htaccess.txt" gesetzt .... wow .... Entschuldigung für die blöde Frage. – Kevin

Antwort

0

htaccess-Dateien auf diesem Server wurden als Textdatei konfiguriert. Aus welchem ​​Grund auch immer - das war eine einfache Lösung.

Verwandte Themen