You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS脚本无法跳转页面,如何避免content.inc被直接访问?

嘿,我来帮你理清问题出在哪儿,一步步解决~

首先,你的JS脚本有致命语法错误,这是浏览器忽略它的核心原因

你写的判断条件里用了单等号 =,这是赋值操作,不是相等判断!而且filename.indexOf("index.php")是一个返回值(不是变量),你没法给它赋值,浏览器执行到这行直接就报错了,整个脚本都跑不起来。

正确的写法应该用**三等号===**做严格相等判断:

var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/') + 1);
// 用===判断当前文件名不包含index.php
if (filename.indexOf("index.php") === -1) {
    var frame_name = "index.php?open=" + filename;
    window.location.replace(frame_name);
}

第二个可能的坑:服务器没把.inc文件当成HTML解析

如果你的服务器默认把.inc文件识别为纯文本或者二进制文件,浏览器会直接显示文件内容,根本不会解析其中的JS脚本。你需要配置服务器让.inc文件以HTML类型返回:

  • 如果你用Apache,在网站根目录的.htaccess里加这一行:
    AddType text/html .inc
    
  • 如果你用Nginx,在站点配置里的types块添加:
    types {
        text/html inc;
    }
    

额外优化:避免无限循环+更精准的判断

之前你遇到过无限循环,其实只要判断逻辑精准就不会出现。比如我们可以只针对.inc文件跳转,这样index.php加载content.inc时,页面URL是index.php,脚本不会触发跳转:

var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/') + 1);
// 只对.inc后缀的文件执行跳转
if (filename.endsWith('.inc')) {
    var frame_name = "index.php?open=" + filename;
    window.location.replace(frame_name);
}

按这个步骤改完,应该就能解决问题啦~

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:13:47