.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。谢谢