将前端链接到Symfony2 API的好方法?

时间:2015-03-12 14:34:10

标签: .htaccess symfony frontend

我有一个Symfony2 API,我想从单页前端应用程序调用它。我当前的url指向Symfony的/ web目录。所以我可以通过app.php或app_dev.php来调用API。这很有效。

现在我想将我的前端应用程序连接到Symfony后端。有什么好办法呢?当然我搜索了.htaccess重写。

例如,应该是将指向* / api的url中的所有请求重定向到Symfony的app.php以及所有不包含/ api到前端应用程序的url请求(符号链接在/ web目录指向包含前端应用程序的供应商地图。)

1 个答案:

答案 0 :(得分:1)

我目前解决了它更改(默认Symfony 2.6).htaccess:

# (remove this line!) DirectoryIndex app.php 

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    # Instead of:
    # (removed) RewriteRule .? %{ENV:BASE}/app.php [L]

    # I did:

    # Redirect everything with %url%/api to the Symfony2 font controller.
    RewriteCond %{REQUEST_URI} api/
    RewriteRule .? %{ENV:BASE}/app.php/$1 [L]

    # Redirect everything else to another dir, possibly front-end app.
    RewriteRule .? %{ENV:BASE}/myfrontend/$1 [R,L,QSA,NE]
</IfModule>

重要的是[R,...]

由于这可能是错误的,我希望有人仍然可以提供有关如何正确执行此操作的提示。