apache和nginx服务器特定文件直接访问的问题请教

finer 2018-05-17 02:35:15
由于我想使用MVC框架开发网页应用,我在.htaccess和route文件使用了下面的规则。但现在我在使用ajax来局部更新页面时出现问题,
当我在$ajax上使用url:“控件/动作方法”获取json数据时,json数据会混在layout.php页面里,有个帖子请教了许多网友高手,目前还没解决。现在想请教一下,能在.htaccess文件里针对特定的文件,如ACController.php行使绿灯可以直接访问从而获取到json数据?(RewriteCond %{REQUEST_URI} !(\.json)$这个是针对json文件的)

1) .htaccess
<IfModule mod_rewrite.c>
# 打开Rerite功能
RewriteEngine On

# 如果请求的是真实存在的文件或目录,直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.json)$

# 如果访问的文件或目录不是真事存在,分发请求至 index.php
RewriteRule . index.php

</IfModule>

2) index.php
<?php
require_once("Public/layout.php");

3) layout.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<header>
<a href="index.php">Home</a> <a href="a1.html">Test</a>
</header>
<?php require("route.php");?>
</body>
</html>


4) route.php
<?php
$controllerName="IndexController";
$actionName="index";

$url=$_SERVER["REQUEST_URI"];
//echo $url;

$arr=explode("/",$url);
$controllerName=$arr[1];
$actionName=$arr[2];
$phpfile= __DIR__."/Controllers/".$controllerName.".php";
require($phpfile);
$myclass=$controllerName;
$ac=new $myclass();
$ac->$actionName();


5)a.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="../Scripts/jquery-1.10.2.min.js"></script>
</head>
<body>
<header>
<input type="text" id="firstName">
<input type="button" id="submit" value="XXYY">
</header>
<div id="text">看这里变化</div>
</body>
</html>
<script>
$(function(){
$("#submit").click(function(){
$.ajax({
url:"ACController/index",
data:{name:$("#firstName").val()},
type:"POST",
dataType:"json",
success:function(jsonData){
var data = JSON.parse(jsonData);
$("#text").html(data.name);
console.log(data.result);
},
error:function(e){
console.log(e);
}
});
//console.trace();
});
})
</script>
...全文
493 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
finer 2018-05-18
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
/模块名/方法名/json 在相应的方法中,根据有无 json 参数,决定是否要经过 layout.php 处理 也可在 ajax 请求时,附加一个标识数据类型的标志
谢谢,可以了。
xuzuning 2018-05-17
  • 打赏
  • 举报
回复
/模块名/方法名/json 在相应的方法中,根据有无 json 参数,决定是否要经过 layout.php 处理 也可在 ajax 请求时,附加一个标识数据类型的标志

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧