我可能会问一个非常愚蠢的问题,但我找不到办法去做我想做的事。
我想将项目上传到我的服务器http://example.com/MyNewProject
在每个网页中,我都包含一个文件,该文件执行StyleSheets,javascript等的所有导入。我不希望每次只想提供完整路径/MyStylesheet.css
< / p>
我的主要网站文档根目录是/var/www/html/example
,我的新项目目录存储在/var/www/html/example/MyNewProject
中。
当我执行/MyStylesheet.css
而不是访问我的服务器主网页目录时,我想要的是导入,它将转到/ 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>
我在谷歌上环顾四周但找不到具体的东西,我发现的唯一一件事就是使用重写引擎,但这看起来有点太复杂了,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"-->
正如您所看到的,这是一个相对路径,而且包含在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指令要求文件位于同一个工作目录中。
希望这是有道理的
答案 0 :(得分:0)
那么,你在虚拟主机中尝试过这样吗?
<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>
希望这次有所帮助..
答案 1 :(得分:0)
偶然偶然发现了这个非常古老的威胁。 如果只希望将子目录视为根目录,则不需要主机或别名。
方法是修改httpd.conf,在那里您会找到
<Directory>
只需更新此行并添加
<Directory "your/server/root/original_path/subpath">
# your options
</Directory>