我可能会问一个非常愚蠢的问题,但我无法找到一种方法去做我想做的事。将子目录作为apache的根目录处理
我想在http://example.com/MyNewProject
项目上传到我的服务器在每个网页上的I包括文件,做所有的进口样式表中,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>
这不幸的是没有工作,所以我也尝试添加以下到我的virtualhosts文件
<VirtualHost *:80>
DocumentRoot /var/www/html/example/NewProjectTemplate
ServerName example.com/NewProjectTemplate
</VirtualHost>
我在Google上浏览过,但找不到任何具体的东西,我发现的唯一的东西是使用重写引擎,但这看起来有些复杂,OTT满足我的需求。
感谢您提供的任何帮助。
UPDATE
OK,我得远一点,虽然不是很多,我敢肯定,它不应该是这个复杂的。
而不是使用虚拟主机,我现在使用别名以下是我已经添加到我的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>
在我的HTML代码在我的SSI我做以下内容:
<!--#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文件= includes/imports.html
的SSI指令作品和/StyleSheet.css导入成功,即使它拥有领先的斜线。如果我添加一个/到SSI的路径,那么它不会被导入。
但是,这里是它变得更加怪异的地方。
如果我然后将另一个文件添加到子目录中,例如NewProjectTemplate/MySubDirectory
,然后添加SSI为../includes/imports.html它仍然无法正常工作。它就像#include文件中的SSI指令一样,期望该文件位于相同的工作目录中。
希望这是有道理的
在我们的PHP代码中,我们创建了一个分析当前URL的环境目标,并基于URL中的子目录,决定了我们的“baseWebPath”。这是基于模板的解决方案的基础,无论脚本的位置如何,我们都可以使用相同的相对路径包含我们的javascript和css,例如“javascript/myscript.js”。据推测,你正试图避免像“../javascript/myscript.js”和“../../javascript/myscript.js”之类的引用。我的建议是采用基于PHP的方法,而不是试图找到基于Apache的解决方案。 – Steven 2014-09-05 17:15:15