我正在构建一个应用程序,Cake
PHP作为我的后端,AngularJS作为我的前端框架.
我需要在与前端代码相同的服务器上安装CakePHP,以便它可以提供我需要的JSON.
通常在CakePHP中,一个有webroot文件夹,除了js / css / less / *之外,还有一个挂钩到CakePHP的index.php.但是,添加AngularJS会增加一些复杂性,因为我还想要一个index.html.
这是我想要的控制流程:
>如果用户访问domain.com/,则显示index.html(但路由保持’* .com /’!)
>如果用户访问domain.com/#/home,请显示index.html并让Angular处理哈希路由
>如果用户访问domain.com/about(假设有关页面,html和所有内容,由CakePHP提供),请将它们发送到index.php.
>如果我使用domain.com/users/list.json进行AJAX调用,请使用index.php以便CakePHP可以为JSON提供服务.
所以我的想法是我可以.htaccess规则处理这个.但我不太清楚要写什么.
现在我有:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d #if it's not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f #if it's not an existing file
RewriteRule ^(.*)$index.php?/$1 [QSA,L] #everything else, send to CakePHP
有任何想法吗?
它会像在RewriteRule / index.html [L]之类的最后一个条件之后添加一行一样简单吗?
另外,请随意使用CakePHP和AngularJS建议替代设置.
谢谢!
编辑:我想提供更多关于我用于AngularJS的构建系统的信息,以及为什么它只是从’home.ctp’视图提出问题.
我正在使用ng-boilerplate,它使用karma进行测试,并使用grunt进行连接,uglifying以及在index.html中包含脚本.
我认为构建系统真的很漂亮,因为它允许我保持模块化结构.
以下是典型ng-boilerplate前端的目录结构:
ng-boilerplate/
|- build/ # Development build
| | index.html
| | assets/
| |
| |- angular/
|- grunt-tasks/
|- karma/
|- src/ # Actual source code I'm editing
| |- app/
| | |-
| |- assets/
| | |-
| |- common/
| | |-
| |- less/
| | |- main.less
|- vendor/
| |- angular-bootstrap/
| |- bootstrap/
| |- placeholders/
|- build.config.js # Build configuration specific to app
|- Gruntfile.js
|- module.prefix
|- module.suffix
|- package.json
这使得工作流程变得困难,因为我必须采用最新的“构建”(在开发期间)并在每次编辑index.html时手动将index.html文件放在home.ctp中.
这就是为什么我的头脑首先去了.htaccess.虽然,我明白这个想法有其自身的局限性,如果我想直接从CakePHP提供一个页面而不是将AngularJS带入图片中.
也许我可以配置构建系统将index.html放在CakePHP的home.ctp视图中.有关此解决方案的任何想法