.htaccess 使用htaccess重定向到特定扩展

.htaccess 使用htaccess重定向到特定扩展,.htaccess,cakephp,.htaccess,Cakephp,我想知道如何使用.htaccess将特定路径重定向到特定扩展。更清楚地说,我想重定向如下内容: http://www.example.com/api/some/page 为此: http://www.example.com/some/page.json 我知道我可以使用CakePHP提供的路由器来完成这项工作,但是,如何使用.htaccess文件来完成这项工作?要处理此重写,您可以在上的重写引擎下方使用此规则: RewriteEngine On RewriteRule ^api/(?!.+

我想知道如何使用
.htaccess
将特定路径重定向到特定扩展。更清楚地说,我想重定向如下内容:

http://www.example.com/api/some/page
为此:

http://www.example.com/some/page.json

我知道我可以使用CakePHP提供的路由器来完成这项工作,但是,如何使用
.htaccess
文件来完成这项工作?

要处理此重写,您可以在
上的重写引擎下方使用此规则:

RewriteEngine On

RewriteRule ^api/(?!.+\.json$)(.+)$ $1.json [L,NC] 
  • (?!.+\.json$)
    是一种负面前瞻,它跳过以
    .json
    结尾的匹配URI(以避免重写循环)
  • 模式
    ^api/(?!.+\.json$)(.+$
    匹配以
    /api/
    开头并捕获
    /api
    /api
    $1
  • 目标中的
    $1.json
    在匹配部分的末尾添加
    .json
  • 标志:
    L
    表示最后一个,而
    NC
    表示忽略大小写

所以您想要
/api/anything/here
/api/anything/here.json
?是的,这是可能的,但是您想要将json文件扩展名附加到页面url有更深层的原因吗?您是否已经重写到
http://www.example.com/api/some/page
,如果是,请显示代码,如果否,则这是路由,如果是,则使用什么?@anubhava:否,应删除/api位。所以
/api/anything/here
应该转到
/anything/here.json
@CraigvanTonder,我使用的是
路由器
类来处理路由。我可能可以用路由器来做,但我希望
.htaccess
能帮我处理。@anubhava:谢谢。太好了。如果你不介意的话,你能简单解释一下规则的每一部分的作用吗?我只想理解答案,而不是简单地复制/粘贴是的,我在答案中添加了详细的解释。@anubhava absolute legend。谢谢