重写 htacces 找不到文件
Rewrite htacces can't find files
我创建了一个ajax网站,从index.php
内的/pages文件夹中调用php页面,所以我在htaccess
中重写以返回索引中的所有页面,因此ajax运行良好,但是当单击刷新页面按钮或首次加载时,该函数找不到文件,一直返回404.php
页面:
这是我的访问:
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
文件夹中的文件
index.php
在第二次传递时被重写拾取并发送到您的页面目录中没有相应页面index.php?p=index
,因此获取404.php
。
避免这种情况的正常方法是在.htaccess中添加非文件和非目录的条件(从而防止实际存在的文件或目录的URL被重写(。
您只需将 .htaccess 更改为:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9'-]+)'.php$ index.php?p=$1 [L]
参见 Apache 的 RewriteCond 手册。
相关文章:
- Angular 2:在本地.json文件上找不到文件
- 放大弹出生成“;找不到文件”;YouTube视频的错误
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- 找不到Intel XDK cordova文件api 1.3.3文件
- 按钮未运行为按钮,找不到如何使运行JS文件
- Spring 3.1 - 找不到 JavaScript 文件 - 404 错误
- javaScript警报和提示框将我重定向到另一个页面,上面写着“;找不到文件”;
- Cordova jsPDF-PDF生成,我在手机上找不到PDF文件
- 错误:找不到模块'html',可以't提供静态文件
- 在子网站/子文件夹中找不到SVG href ID
- 嵌套页找不到父.js文件
- 为什么浏览器可以'在`.中找不到js文件/lib/`(相对)位置
- 可以'在Angular应用程序中找不到引导文件
- Angular html文件可以'找不到JS控制器[Node.JS/Angular]
- 节点可以'找不到父node_modules文件夹中存在的模块
- angularjs生成器中的Coffeescapet在控制台中找不到js文件
- 外部JS文件找不到控件,但可以使用quickwatch
- Rails js.动词文件找不到方法“渲染”
- 在Django中使用url参数时,CSS + JS文件找不到(404)
- 捆绑 css 文件 - 找不到文件