- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的项目具有以下组织,但无法从 HTML 代码中访问相关的 CSS 和 JavaScript 文件,除非我创建从文件到 Web 根目录的符号链接(symbolic link)。
这是 Apache 的正常行为还是问题出在其他地方?
如果我删除符号链接(symbolic link)并更正 src
属性中的路径,这些外部文件的内容将无法访问。
userName@hostName:/var/www/test$ tree
.
├── css
│ └── style.css
├── html
│ ├── code.js -> ../js/code.js
│ ├── index.html
│ ├── jquery-3.2.1.js -> ../libs/jquery-3.2.1.js
│ └── style.css -> ../css/style.css
├── js
│ └── code.js
└── libs
└── jquery-3.2.1.js
4 directories, 7 files
userName@hostName:/var/www/test$ less html/index.html
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="./style.css">
<title>Test</title>
</head><!-- head -->
<body>
<h1>LOCAL TESTING SITE..</h1>
</body><!-- body -->
<script src="./code.js"></script>
</html><!-- html -->
html/index.html (END)
^ 有效
userName@hostName:/var/www/test$ tree
.
├── css
│ └── style.css
├── html
│ ├── index.html
├── js
│ └── code.js
└── libs
└── jquery-3.2.1.js
4 directories, 4 files
userName@hostName:/var/www/test$ less html/index.html
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<title>Test</title>
</head><!-- head -->
<body>
<h1>LOCAL TESTING SITE..</h1>
</body><!-- body -->
<script src="../js/code.js"></script>
</html><!-- html -->
html/index.html (END)
^ 不起作用
userName@hostName:/var/www/test$ tree -p
.
├── [drwxrwxr-x] css
│ └── [-rw-rw-r--] style.css
├── [drwxrwxr-x] html
│ ├── [lrwxrwxrwx] code.js -> ../js/code.js
│ ├── [-rw-rw-r--] index.html
│ ├── [lrwxrwxrwx] jquery-3.2.1.js -> ../libs/jquery-3.2.1.js
│ └── [lrwxrwxrwx] style.css -> ../css/style.css
├── [drwxrwxr-x] js
│ └── [-rw-rw-r--] code.js
└── [drwxrwxr-x] libs
└── [-rw-rw-r--] jquery-3.2.1.js
4 directories, 7 files
^ 文件权限
userName@hostName:/etc/apache2$ less sites-available/test.local.conf
<VirtualHost *:80>
ServerAdmin myEmail@email.com
DocumentRoot /var/www/test/html
ServerName test.local
ErrorLog ${APACHE_LOG_DIR}/test.local.error.log
CustomLog ${APACHE_LOG_DIR}/test.local.access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
sites-available/test.local.conf (END)
^ 虚拟主机配置
userName@hostName:/var/www/test$ uname -v
#35~16.04.1-Ubuntu
userName@hostName:/var/www/test$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
^系统信息
最佳答案
出于安全原因,Apache 将(默认情况下)不允许 HTTP 请求访问网站根目录之外(上方)的文件。
您的文档根目录设置为:DocumentRoot/var/www/test/html
,因此所有文件(包括非 HTML 文件)都需要在此目录中。不要仅仅因为该目录名为 html
,就认为它应该只包含 HTML 文件。
userName@hostName:/var/www/test/html$ tree
.
├── css
│ └── style.css
├── js
│ └── code.js
├── libs
│ └── jquery-3.2.1.js
└── index.html
3 directories, 4 files
userName@hostName:/var/www/test/html$ less index.html
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>Test</title>
</head><!-- head -->
<body>
<h1>LOCAL TESTING SITE..</h1>
</body><!-- body -->
<script src="js/code.js"></script>
</html><!-- html -->
index.html (END)
您将看到所有文件都存储在 /html
目录或其子目录中。 JS 和 CSS 文件的 HTML 链接已更新,以引用正确的文件位置。
如果 Apache 允许访问根目录之外(上方)的文件,您将遇到重大安全问题。
例如,假设某人有一个执行以下操作的 HTML 文件:
<!doctype HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<a href="../../../var/private/supersecret.conf">link to secret config file</a>
</body>
</html>
这将允许用户访问服务器上他们想要的任何随机文件。
关于linux - 为什么 Apache 不允许从 index.html 中访问 Web 根目录之外的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970033/
我正在使用 prestashop,在主题中我添加了自己的目录,里面有一个样式表 然后我在 header.tpl 中链接了样式表 例如 但是,如果我在子目录中安装 prestashop,例如 www.
我有以下目录结构: C:\mywebsites \site_1 \site_2 \site_n 在“site_2”中,我安装了 joomla,但是,我在“额外”文件夹之一中有其他文件夹,其
我有一个家庭作业,要求我使用 bash 脚本在 Linux 终端中打印某些内容。我已经完成了其中的大部分,但我被困在我需要做的最后一件事上......这就是我的教授的措辞 Checks to see
通过 Windows Batch,删除文件夹的所有子目录和子文件而不删除/删除所述父/根文件夹的命令是什么? 到目前为止,这是我尝试过的: ECHO "Good riddance, cache! Mu
我正在将 OpenCV 用于各种对象检测器,但我发现很难编写可移植代码。 例如,要在通过自制软件安装了 OpenCV 的 Mac 上加载人脸检测器,我必须这样写: haar=cv.Load('/usr
目录树的主要部分有root(/)、/USR、/var、/home等等。下面是一个典型的linux目录结构如下: / 根目录 /bin 存放必要的命令 /boot
我被这个非常愚蠢的错误所困扰。我正在尝试使用 bluepy 在 Raspberry Pi 上运行 pytest。 pi@pi:~/bluepy/bluepy $ pytest test_asdf.py
我在 Ubuntu 14 上安装了 MediaWiki,该站点的 URL 为:www.wiki.example.com/mediawiki/ 但是我想将位置更改为 www.wiki.example.c
我已经阅读了文档,但有些事情仍然让我感到困惑,主要与同步文件夹和数据库数据有关。 我想在我的主机上使用以下文件夹结构 ROOT |- workFolder ||- project1 |||- proj
我想在我的 Azure webrole 启动时授予网络服务帐户修改权限(根项目目录),有人知道这样做的方法吗?修改后,我会重置该值以确保安全。主要目的是我需要修改 webconfig 以根据多个节点上
我需要作为自定义构建器的一部分按顺序运行两个程序。 其中一个程序我被困住了,无法处理绝对/相对路径,因此我必须使用构建器的 chdir=1 选项才能运行其操作与目标位于同一目录中。 第二个是位于项目的
Cmake的安装命令 install(TARGETS MyTarget LIBRARY DESTINATION lib) 要求我将共享库安装到子文件夹中。似乎 LIBRARY DESTINATION
我正在尝试运行这个: string webRoot = "http://www.dev/api"; string apiRoot = "http://api.dev"; string path = "
在 android 中,我可以使用以下方法获取手机的可移动外部存储: for (File f : context.getExternalFilesDirs("/")) if (Environm
当我启动 tomcat 时,它从 localhost:8080/开始服务。我希望它从 localhost:8080/aaa 开始服务。我不想用“aaa”webapp 替换“root”webapp,我希
我想在按下按钮时向页面顶部的根 html 标记添加一个类。我遇到的唯一代码是将类添加到具有 id 的 div 元素。 Untitled Document 开始演示 我尝试修改这段代码,但没
我希望了解 ROOT 的 TTreeReader 和 TVector3 类的人可以帮助我。 我正在尝试使用 TTreeReader 读取包含 TVector3 的 TTree。 class MuseS
我已经从已经运行并安装在我本地的服务器上下载了 prestashop 文件选择了默认主题,但未应用任何样式表例如,当我通过 Firebug 检查时,样式表路径是错误的我有 http://localho
我有一个脚本,用于搜索包含特定文件的目录,从当前目录开始向上爬(想想试图找出 .git 目录所在的位置)。 我的方法是这样的: def getDir(self,cwd): path = os.pa
我需要 检查当前目录是否在Git版本控制下 如果是 Git 根目录 在单行 shell 脚本中执行上述操作,成功时应以 0 退出 最佳答案 使用 git-rev-parse 是可行的方法。只需确保将其
我是一名优秀的程序员,十分优秀!