2016-04-25 6 views
0

これは私のフォルダ構造です:AngularJS + PHPのAPI

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 

だから、私はこれをしたい:http://localhostにアクセスするだけで、私のindex.html返し、次のように

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

私の.htaccessがあります。しかし、私のapi.phpファイルで処理する必要がある私のAngularJs scrips内のAjaxコール/api/something

現在、私のApache仮想ホストはmyproject/publicを指しています。 http://localhostにアクセスするとindex.htmlが返されますが、/api/somethingにもindex.htmlが返されます。 api.phpに決して届かないようです。何か案は?

答えて

2

私はあなたがダブルドットで動作させることはできませんが、あなたはルールの処理を終了していないと思います。だから、

、それはAPIと一致した後、それはあなたの最後のルールに進みと

がそうのように、あなたのAPI行の末尾に[L]を追加index.htmlをするに書き換える:

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

それはおそらく必要になるため、これを追加:)、あなたは「何かが」あなたのapi.phpであるかを知りたい場合は、パラメータとして残りまたは(APIの後)のURLを渡すことができ

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

にとして、私はあなたがapaを打つとき、相対性は働かないと思ったこれは、.. /apiの可能な解決方法を参照してください:http://stackoverflow.com/a/21324642/3802077 – user3802077

+0

Cool。私は家に到着したらそれを試してみる。ありがとう! –