我正在开发一个 Laravel/Ember.js 应用程序,其中 Laravel 充当后端框架和 RESTful 数据提供者的一般角色,而 Ember.js 部分用于客户端。
到目前为止,它工作正常。但是我希望 Ember.js 控制一些子 URL。
假设我/members
在 Laravel 中有路由服务于 Ember 应用程序,并且我希望子后续 URL 能够利用带有 Ember 的 pushState,如下所示:
/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>
感谢您对 url 重写这个主题的任何帮助。谢谢!