包含文件的相对路径 - ASP / HTML

时间:2012-03-23 17:11:24

标签: asp-classic include relative-path include-path document-root

很抱歉,如果这个问题在其他地方得到解答,但我尝试搜索多个页面但未成功。

所以我有一个我在所有页面中使用的包含文件(侧边栏)。

Default.asp
Products.asp
Salary/Survey.asp
inc/sidebar.asp (this is the included file)

现在在sidebar.asp内我有Salary/Survey.asp

的链接 从根级别的所有其他页面

,我可以简单地使用href='Salary/Survey.asp'并且可以正常工作。但当我在页面Survey.asp上时,写href='Salary/Survey.asp'将成为Salary/Salary/Survey.asp。我知道必须正确使用../Salary/Survey.asp,但它不适用于根级页面。

我无法使用root relative /Default.asp/Salary/Survey.asp,因为我正在为别人的项目工作,我不知道他的目录结构,因此我只能选择{{ 1}}路径。

希望这一点很清楚,有人帮助我。

谢谢!

3 个答案:

答案 0 :(得分:2)

我们通过以下方式解决了这个问题...

  1. 我们的每个asp页面都包含一个特殊文件 Dims 并设置 golbal变量。我们称之为 Info.asp
  2. Info.asp 内,我们定义了一个名为 strRelativePath 的变量
    昏暗 strRelativePath
    strRelativePath =“”
  3. 每个asp页面根据它的相对位置设置相对路径:
  4. 例如:

    • 根页 - strRelativePath =“”
    • 一级深度页面 - strRelativePath =“../”
    • 两个级别的深层页面 - strRelativePath =“../../"

    然后,需要使用<%= strRelativePath %>的相对路径的所有链接的前置问题。

答案 1 :(得分:1)

you need to get write this after the that - Salary/Survey.asp
You can get the virtual path to the file from one of several server variables - try either:

Request.ServerVariables("PATH_INFO")
Request.ServerVariables("SCRIPT_NAME")

服务器变量将为您提供虚拟路径,包括任何子目录和文件名 - 根据您的示例,您将获得/virtual_directory/subdirectory/file.asp。如果您只是想要虚拟目录,则需要使用您喜欢的任何方法在第二个正斜杠后删除所有内容,例如:

s = Request.ServerVariables("SCRIPT_NAME")
i = InStr(2, s, "/")
If i > 0 Then
    s = Left(s, i - 1)
End If
or:

s = "/" & Split(Request.ServerVariables("SCRIPT_NAME"), "/")(1)

答案 2 :(得分:0)

基本上,如果您的侧边栏可以包含在不同文件夹中的程序中,唯一的“简单”方法是使用您提到的绝对路径。

你说不能使用它,所以我会想到不同的方式......

  • 虚拟文件夹:在IIS中,您可以在salary文件夹中为“salary”设置一个虚拟文件夹,并将其指向该站点的根目录。
  • 操作系统链接(类似于上面,但在操作系统级别)
  • 使用mappath。您可以检查mappath以查看您所在的实际文件夹,并使用正确的include(带/不带/薪水),但我认为这可能会给您一个错误,不确定。