javascript - Javascript 在与 HTML 不同的文件夹中
问题描述
我是网络开发的新手。我有将文件存储在不同文件夹中的问题(出于安全原因)。这是返回错误的索引页面
<head>
<script src="../scripts/script.js"></script>
</head>
<body>
<?php include "../php/page.php"; ?>
Other code here...
</body>
我的文件结构如下
www/
html/
index.php
scripts/
script.js
php/
page.php
我不明白为什么包含 php 文件有效(提供的示例代码中的第 5 行)并且包含 javascript 无效(第 2 行)。我猜你对这个错误感兴趣,所以这就是谷歌浏览器的控制台所说的
Failed to load resource: the server responded with a status of 404 (Not Found)
它还显示了该资源的链接,并且它似乎在寻找 my.server.address/scripts/script.js 就像它不关心 ../ 部分一样。有人可以解释这种行为吗?
解决方案
PHP 解析计算机文件系统上的路径。
Web 浏览器解析 URL 上的路径。
您的 HTTP 服务器在文件系统上有http://my.server.address/
映射。www/html
所以从...../scripts/script.js
上升一级到(因为那是顶部),然后下降到再下降到。/
/
/scripts
/scripts/script.js
浏览器向 HTTP 服务器请求,/scripts/script.js
并将其映射到文件系统 -www/html/scripts/script.js
并返回 a 404
,因为该文件不存在。
浏览器只能读取网络服务器将发送给它的数据,并且通过将目录保留在scripts
文档根目录之外,您无法通过网络服务器使其可用。
推荐阅读
- javascript - 过滤列表而不是 D3 中的选择下拉列表
- reactjs - 在特定的 ASPNET Core 项目路线中反应 SPA
- deeplearning4j - Wildfly 中的 org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException
- oracle - 在引用自身集合的 PL/SQL 块中定义记录类型
- regex - 正则表达式与最后一个单词不匹配
- java - Android更新每个动作的价值总和
- angularjs - 在 ag-grid 中使用浏览器级别滚动而不是网格级别(表级别)滚动
- deployment - 停止 jboss 应用程序服务器 wildfly 后,standalone.xml 不会删除部署
- c - 在 C 中,为什么尽管在代码中提到了我在链表节点内的 scanf 输入却没有被采用?
- php - Laravel 多个命名的可选参数,其中顺序无关紧要