Iis 如何在不中断仍然使用格式不正确URL的外部站点的传入链接的情况下移动页面并对其进行重命名

Iis 如何在不中断仍然使用格式不正确URL的外部站点的传入链接的情况下移动页面并对其进行重命名,iis,asp-classic,url-rewriting,Iis,Asp Classic,Url Rewriting,更新 情况如下: 我正在一个网站上工作,该网站没有物理文件夹结构。没有任何计划或控制,大约有4个连续的网站管理员 下面是一个特别难看的目录示例 \new\new\pasite new.asp 大多数页面存储在与文件同名的文件夹中,以实现最大冗余 \New\10cap\pasite-10cap.asp \QL\Address\PAsite Address.asp 每个[页面目录]?(我不知道还能叫什么)有一个include文件夹,include文件夹在每种情况下都包含相同的*.inc文件

更新

情况如下:

我正在一个网站上工作,该网站没有物理文件夹结构。没有任何计划或控制,大约有4个连续的网站管理员

下面是一个特别难看的目录示例

  • \new\new\pasite new.asp
大多数页面存储在与文件同名的文件夹中,以实现最大冗余

  • \New\10cap\pasite-10cap.asp
  • \QL\Address\PAsite Address.asp
每个[页面目录]?(我不知道还能叫什么)有一个
include
文件夹,include文件夹在每种情况下都包含相同的
*.inc
文件,每个页面目录只复制了大约162次。已复制包含文件夹,以便
将正常工作,因为不了解相对路径,以及
#include virtual指令
或使用
server.execute()

如果没有我的解释,这里有一张图片


以下是我的一些限制:

  • 该网站是用ASP编写的
  • 服务器是Windows Server 2003 R2 SP2,IIS 6(根据我的资源)
  • 我没有访问IIS服务器的权限
  • 我必须经过一个过程才能将任何模块或功能添加到iis

我可以做些什么改变,使我能够移动页面并对其进行重命名,同时不中断仍然使用格式不良URL的外部站点的传入链接

使我的问题更具体。


如何将文件
10cap.asp
\new\10cap\
移动到更好的位置,如
\
,并将文件重命名为
saveourhomescap.asp
,而不中断任何传入链接,最后,不必将虚拟
10cap.asp
页面保留在原始位置,并重定向到新页面。

我建议使用URL重写,请参阅下面的博客,特别是“站点重组”:


有关URL重写的更多信息,请参见:

哇,这有很多限制要处理

你能设置一个自定义错误页面吗?如果是这样,您可以在自定义错误页面中添加一些代码,将用户重定向到新页面。因此,您可能会创建一个自定义404页面,在该页面中获取查询字符串变量,并根据该变量将用户发送到正确的“新建”页面。这将允许您删除所有旧页面


这里有一篇关于此方法的非常好的文章:

您可以尝试ISAPIRewrite,因为它是经典的ASP+IIS6


他们有一个免费的lite版本,可能足以供您使用。

urlrewrite只有在您可以在服务器上安装dll的情况下才能工作

其中一篇文章会有所帮助

基本上,您必须将404个错误指向一个错误页面,该页面将解析传入的querystring/post信息,并使用添加的传入参数将用户重定向到正确的位置


这个主题的变体可以在谷歌的例子中找到。

好吧,你有很多限制,尤其是不能访问IIS服务器。用于URL重写的ISAPI模块在这里不是一个选项(IIS),同样,可以读取引用并使用HTTP 301转发的自定义404页面也不起作用(IIS)

实际上,我建议您完成此过程,让他们安装:

  • ISAPI URL重写模块
或者如果这不起作用(出于任何原因):

  • 让他们将您网站的HTTP 404指向一个自定义的
    404.asp
    ,读取引用并使用HTTP 301(永久移动)重定向到您的新位置
如果这些都不是你的选择,我可以考虑另一种可能性。实际上我还没有试过,所以我不能100%确定它是否会起作用,但理论上它听起来不错;)

您可以在事件中做出
响应。重定向
或将响应的标题更改为HTTP 301。这实际上只适用于新用户,不能修复真正的404错误。很抱歉,对于伪代码,但我很久以前就开始使用经典ASP,我想你会明白我的意思;)


希望这能有所帮助。

不确定您是否一直在阅读我的问题。URL重写是否适用于IIS6和asp classic?我没有要修改的web.config文件。抱歉,我的错误ULR重写仅适用于IIS 7及以上版本。它确实适用于任何可能的框架,如经典ASP、ASP.NET、PHP、静态文件等;昨天我在另一个网站上试用了一个版本;也许我没有给它足够的时间。我根本无法让它工作。我按照现场的指示,它工作了。但我想我错过了一些更好的地方。是否需要为sBaseURLList变量中的每个值创建asp页?请参阅OPASEURLLIST中的代码对不起,您指的是哪个sBaseURLList变量?我看到一个名为aURLParts的变量。
RewriteRule^.*/home/?$/home/pasite-home.asp[nc]
为什么不起作用?这难道不应该将地址栏中输入的任何url带到pasite-home.asp页面吗?我认为isapirewrite可以工作。因为这是一个相对容易的安装过程。我真的需要能够找到一些好的例子,说明如何编写我需要的httpd.conf/.htaccess文件。我将把奖金让给任何能够为我提供关于如何为不同场景设置重定向的明确说明的人。好的,我已经开始使用Isapi重写3进行测试。不幸的是,url重新映射工作正常,但它破坏了许多包含和../javascript/file/references/。啊……哈哈!我已经能够让这东西按要求工作了。谢谢你的意见,不客气。只是出于好奇,什么
sub Session_OnStart

    ' here should be a Select Case switch or something like that 
    Response.Redirect("newlocation.asp")

    ' or if that will work, this would be better (again with switch)
    Response.Status = "301 Moved Permanently"
    Response.AddHeader "Location", "http://company.com/newlocation.asp"

end sub