【发布时间】:2016-12-08 21:23:11
【问题描述】:
我创建了一个 ajax 网站,该网站从我的 index.php 内的 /pages 文件夹调用 php 页面,因此我在 htaccess 中进行了重写,以便在我的索引中返回我的所有页面,因此 ajax 运行良好,但是当单击刷新页面时按钮或首次加载时,函数找不到文件,一直返回404.php页面:
这是我的 htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9\-]*).php$ index.php?p=$1 [L]
这是我的 php 函数调用我的页面:
<div id="ajax-container">
<?php
$d = "pages/";
if (isset($_GET['p'])) {
$p = strtolower($_GET['p']);
if (preg_match("/^[a-z0-9\-]+$/", $p) && file_exists($d . $p . ".php")) {
include $d . $p . ".php";
} else {
include $d . "404.php";
}
} else {
include $d . "home.php";
}
?>
</div>
我认为问题来自我的重写,因为它重写了所有页面 php,所以我认为它也在重写我的 index.php,所以该函数找不到 ['p'],但我不确定,我不知道知道是不是这样,我怎样才能只重写我的/pages 文件夹中的文件
【问题讨论】:
-
您可能希望在
file_exists()函数中使用服务器文件路径,尝试定义$d = realpath( __DIR__ . '/pages/' );- 您可能还想添加一些健全性检查,例如is_dir()。 -
问题仍然存在,实际上我不明白为什么该函数找不到我的页面,因为它找到了文件夹,它返回了 404.php 页面,为什么它找不到其他页面
-
哦是的 - 这正是正在发生的事情,你需要标准的 not file not directory 条件
标签: javascript php jquery ajax .htaccess