Ember.js pushState路由器接管Laravel路由

时间:2013-08-31 17:14:25

标签: .htaccess mod-rewrite ember.js laravel pushstate

我正在开发一个Laravel / Ember.js应用程序,其中Laravel为后端框架和RESTful数据供应商提供一般角色,Ember.js部分用于客户端。

到目前为止一切正常。但是我希望Ember.js控制一些子网址。

假设我在Laravel中有/members路由服务于Ember应用程序,我希望子结果URL能够像这样利用pushState和Ember:

/members/add/members/edit/1等。而不是/members#/add/members#/edit/1

使用Ember很容易实现:

App.Router.reopen({
    location: 'history', //instead of 'hash'
    rootURL: '/members'
})

单击链接时效果很好。

然而,当我刷新页面时,Laravel路由器开始使用.htaccess尝试通过laravel的index.php在公共文件夹中提供每个URL。这是Laravel原始.htaccess文件:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我不是Apache URL重写的专家,所以我需要告诉.htaccess重写/members之后的所有内容(/members/add/members/view等。 。)返回/members路线,以便Ember.js接管并适当重定向。

我试图做这样的事情,但它不起作用:

<IfModule mod_rewrite.c>
   Options -MultiViews
   Options +FollowSymLinks
   IndexIgnore */*
   RewriteEngine On

   RewriteCond %{REQUEST_URI} /members
   RewriteRule (.*) members

   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ index.php [L]
</IfModule>

对此网址重写主题的任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

看看:

enter image description here

它为我工作!

再见!