html - 将子目录视为 Apache 的根目录

标签 html apache

我无法找到一种方法来做我想做的事。我想将项目上传到我的服务器 http://example.com/MyNewProject

在每个网页中,我都包含一个文件,该文件执行样式表、JavaScript 等的所有导入。我不想每次都提供完整路径,我只想能够做到 /MyStylesheet.css

我的主要网站文档根目录是 /var/www/html/example我的新项目目录存储在 /var/www/html/example/MyNewProject 中.

当我做的时候,我想要的是我的导入/MyStylesheet.css它不会转到我的服务器主 Web 目录,而是转到/var/www/html/example/MyNewProject 以获取 CSS。

我已经尝试将以下内容添加到我的 Apache 配置文件中:

Alias /NewProjectTemplate "/var/www/html/example/NewProjectTemplate"
Alias /NewPRojectTemplate/ "/var/www/html/example/NewProjectTemplate"

<Directory "/var/www/html/example/NewProjectTemplate">
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        XBitHack On
        Order allow,deny
        Allow from all
</Directory>

不幸的是,这没有用,所以我也尝试将以下内容添加到我的虚拟主机文件中

<VirtualHost *:80>
DocumentRoot /var/www/html/example/NewProjectTemplate
ServerName example.com/NewProjectTemplate
</VirtualHost>

我在 Google 上四处寻找,但找不到任何具体的东西,我唯一发现的是与使用重写引擎有关的东西,但这似乎有点太复杂,而且 OTT 无法满足我的需要。

更新

我还有一点,虽然不是很多,但我相信它不应该这么复杂。

我现在不使用虚拟主机,而是使用别名,下面是我添加到 httpd.conf 文件中的内容

DocumentRoot "/var/www/html"
Alias /NewTemp/ "/var/www/html/example/NewProjectTemplate/"
Alias /NewTemp "/var/www/html/example/NewProjectTemplate"

<Directory "/var/www/html/example/NewProjectTemplate/">
        Options FollowSymLinks Includes
        AllowOverride all
</Directory>

<Directory "/var/www/html/example/NewProjectTemplate">
        Options FollowSymLinks Includes
        AllowOverride all
</Directory>

在我的 SSI 的 HTML 代码中,我正在执行以下操作:

<!--#include file="includes/imports.html"-->

如您所见,这是一个相对路径,Includes 位于 NewProjectTemplate 的根目录中。然而,这是一个模板文件,所以我希望它总是去根目录找到文件,这样无论在网站中有多深,它都能保证工作。例如,如果我将行更改为以下,则会收到错误 error processing directive

<!--#include file="/includes/imports.html"-->

因此,即使它没有/但没有斜杠也能工作,如果我不包含斜杠,那么这个导入就可以工作,imports.html 文件中的导入工作,即使它们确实包含前导斜杠所以它总是去根。下面是我的 HTML 导入文件

<link rel="stylesheet" type="text/css" href="/StyleSheet.css">
<link rel="stylesheet" type="text/css" href="/navigation/top-nav.css">
<link rel="stylesheet" type="text/css" href="/navigation/side-nav.css">
<script type="text/javascript" src="/scripts/jquery.js"></script>
<script type="text/javascript" src="/scripts/menu.js"></script>

所以澄清一下,如果#include file = includes/imports.html SSI 指令有效并且/StyleSheet.css 被成功导入,即使它有前导斜杠。如果我将/添加到 SSI 的路径,它就不会被导入。

但这就是它变得更奇怪的地方。

如果我然后将另一个文件添加到子目录,例如NewProjectTemplate/MySubDirectory然后将 SSI 添加为 ../includes/imports.html 它仍然不起作用。它就像 #include 文件 SSI 指令期望文件位于同一工作目录中。

最佳答案

那么,你在虚拟主机中这样试过吗?

<VirtualHost *:80>
    ServerAdmin emailaddress@domain.com
    DocumentRoot "/var/www/html/example/"
    ServerName example.local
    ServerAlias example.local
    <Directory "/var/www/html/example/">
        Options All Includes Indexes FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>

    Alias /NewProjectTemplate /var/www/html/example/NewProjectTemplate
    <Directory "/var/www/html/example/NewProjectTemplate">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

希望这次对您有所帮助..

关于html - 将子目录视为 Apache 的根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537954/

相关文章:

php - 如何在php或apache中限制文件上传速度?

php - 解析 Apache VHosts 以获取域和文件夹路径列表

php - Codeigniter 文件路径

apache - 到 Apache 2.4.4 和 Tomcat 7.0.33。通过 HTTPS 访问网站产生 “Object not found” 错误

html - 为什么 float 元素在使用宽度时不能并排对齐?

html - 将输入文本的光标向右移动

php - 通过 PHP 清除 XML 文档中的十六进制实体

html - 输入的高度非常小

html - Bootstrap 中的边框环绕行而不是我应用边框的元素?

apache - robots.txt 和 htaccess(而 CMS 位于子文件夹中)