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

Asp classic 包含文件的相对路径-ASP/HTML,asp-classic,include,relative-path,include-path,document-root,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

很抱歉,如果这个问题在其他地方得到了回答,但我尝试搜索了几页,但没有成功

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

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
,因为我在为别人的项目工作,我不知道他的目录结构,因此我只能选择
文档relative
路径

希望这是清楚的理解和有人帮助我


谢谢

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

你说我不能用它,所以我会想不同的方法

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

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

你说我不能用它,所以我会想不同的方法

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

    • 我们用以下方法解决了这个问题

    • 我们的每个asp页面都包含一个特殊文件,该文件Dims并设置golbal变量。我们调用了我们的Info.asp
    • Info.asp中,我们定义了一个名为strRelativePath
      DimstrRelativePath
      strRelativePath=“”
    • 每个asp页面根据其相对位置设置相对路径:
    • 例如:

      • 根页面-strRelativePath=“”
      • 一级深度页面-strRelativePath=“../”
      • 两级深度页面-strRelativePath=“../../”

      然后是用

      将所有需要相对路径的链接放在前面的问题,我们用以下方法解决了这个问题

    • 我们的每个asp页面都包含一个特殊文件,该文件Dims并设置golbal变量。我们调用了我们的Info.asp
    • Info.asp中,我们定义了一个名为strRelativePath
      DimstrRelativePath
      strRelativePath=“”
    • 每个asp页面根据其相对位置设置相对路径:
    • 例如:

      • 根页面-strRelativePath=“”
      • 一级深度页面-strRelativePath=“../”
      • 两级深度页面-strRelativePath=“../../”
      然后是一个将所有需要相对路径的链接放在前面的问题

      任何一个服务器变量都将为您提供包含任何子目录和文件名的虚拟路径-根据您的示例,您将获得
      /virtual\u 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)
      
      任何一个服务器变量都将为您提供包含任何子目录和文件名的虚拟路径-根据您的示例,您将获得
      /virtual\u 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)
      

      谢谢大家的回答。我喜欢贾丁的方法,但我最终还是用科德角-甘尼的答案,因为我也有类似的想法。再次感谢大家的帮助。谢谢大家的回答。我喜欢贾丁的方法,但我最终还是用科德角-甘尼的答案,因为我也有类似的想法。再次感谢你的帮助。