我使用angular构建了一个站点的前端,并通过Kirby创建了cms。Kirby允许您从使用cms创建的结构构建json api,如下所示。
我现在要做的是使用Kirby提供的api,它是:
address.com/projects/api
我使用html5和htaccess来重写我的url,这样我就不需要在url中使用散列,并且子页面上的页面刷新会被重定向到适当的angular视图。address.com/work
address.com/about
address.com/single-project
我的htaccess是这样的
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html
Kirby也需要自己的htaccess来服务页面,所以我的问题是…是否有可能允许访问我的json模板address.com/projects/api,仍然保留角干净的url ?
如果我理解正确,你想忽略/projects/api?然后你可以这样做
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/projects/api [NC]
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
您可以在您的阴性RewriteCond
中添加更多排除:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/(index|projects/api) [NC]
RewriteRule ^ index.html [L]
贴完#facepalm就解决了。
在相同或类似情况下对任何人都起作用的额外行
RewriteRule (api) index.php
我有同样的问题,但以上都没有解决我的问题。
我当前的。htaccess如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^app.mydomain.com [NC]
RewriteRule ^(.*)$ http://www.app.mydomain.com/$1 [L,R=301]
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html
我的API文件夹路径是http://www.app.mydomain/api