2016-04-25 4 views
0

Dies ist meine Ordnerstruktur:AngularJS + PHP api

myproject/ 
    api/ 
     api.php 
    public/ 
     .htaccess 
     index.html 
     scripts/ 
      ... all my angular stuff... 

Meine .htaccess ist wie folgt:

RewriteEngine On 
# If an existing asset or directory is requested go to it as it is 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 
RewriteRule^- [L] 

RewriteRule ^/api/ ../api/api.php 

# If the requested resource doesn't exist, use index.html 
RewriteRule^/index.html 

Also, ich möchte dies: Zugriff auf http://localhost nur index.html meine zurückgibt. Aber Ajax Anrufe innerhalb meiner AngularJs Scripts an /api/something sollten von meiner api.php Datei behandelt werden.

Derzeit zeigt mein virtueller Apache-Host auf myproject/public. Der Zugriff auf http://localhost funktioniert gut (es gibt die index.html zurück), aber meine Aufrufe an /api/something gibt auch index.html zurück. Es scheint, dass api.php nie erreicht wird. Irgendwelche Ideen?

Antwort

2

Ich glaube nicht, dass Sie mit den Doppelpunkten arbeiten können, aber Sie beenden die Verarbeitung der Regeln nicht.

So, nachdem es api passt, geht es weiter zur letzten Regel und umschreibt

Fügen Sie die [L] am Ende Ihrer api Linie index.html, etwa so:

RewriteRule ^/api/ ../api/api.php [L] 

Addiert man diese, da wird es wahrscheinlich notwendig sein :), wenn Sie wissen wollen, was ‚etwas‘ in Ihrem api.php ist man den Rest oder die uRL (nach api) als Parameter

RewriteRule ^api/(.+)$ <whatever_url_work>/api.php?action=$1 [NC,L] 
+1

wie passieren könnte Ich vermutete, Relativität wird nicht funktionieren, wenn du Apa triffst che, sieh dies für eine mögliche Lösung zu ../api: http://stackoverflow.com/a/21324642/3802077 – user3802077

+0

Cool. Ich werde es versuchen, wenn ich zu Hause ankomme. Vielen Dank! –