开发者

How to move pages around and rename them while not breaking incoming links from external sites that still use the poorly formed URLs

开发者 https://www.devze.com 2023-02-07 14:14 出处:网络
update Here is the situation: I\'m working on a website that has no physical folder structure.Nothing had been planned or controlled and there were about 4 consecutive webmasters.

update

How to move pages around and rename them while not breaking incoming links from external sites that still use the poorly formed URLs

Here is the situation:

I'm working on a website that has no physical folder structure. Nothing had been planned or controlled and there were about 4 consecutive webmasters.

Here is an example of an especially ugly directory

  • \new\new\pasite-new.asp

most pages are stored in a folder with the same name as the file, for maximum redundancy.

  • \New\10cap\pasite-10cap.asp
  • \QL\Address\PAsite-Address.asp

each of these [page directories]? (I don't know what else to call them) has an include folder, the include folder contains the same *.inc files in every case, just copied about 162 times for each page directory. The include folder was duplicated so that the <!--#include file="urlstring"--> would work correctly due to lack of understanding of relative paths, and the #inclue virtual directive or using server.execute()

Here is a picture if my explanation was lacking.

How to move pages around and rename them while not breaking incoming links from external sites that still use the poorly formed URLs


Here are some of my limitations:

  • The site is written in ASP classic
  • Server is Windows Server 2003 R2 SP2 , IIS 6 (According to my resource)
  • I have no access to the IIS server
  • I would have to go through a process to add any modules or features to iis

What changes can I make that would allow me to move pages around and rename them while not breaking incoming links from external sites that still use the poorly formed URLs?

To make my question more specific.

How can I move the file 10cap.asp from \new\10cap\ to a better location like \开发者_如何学编程 and rename the file to someting like saveourhomescap.asp and not break any incoming links and finally, not have to leave a dummy 10cap.asp page in the original location with a redirect to the new page.


Wow, that's a lot of limitations to deal with.

Can you setup a custom error page? If so you can add some code into a custom error page that would redirect users to the new page. So maybe you create a custom 404 page, and in that page you grab the query string variable and based on that send the user to the correct "new" page. That would allow you to delete all of the old pages.

Here is a pretty good article on this method: URL Rewriting for Classic ASP


Well, you have a lot of limitations and especially no access to the IIS server hurts. An ISAPI module for URL rewriting is not an option here (IIS) and equally a custom 404 page where you could read the referer and forward with a HTTP 301 won't work (IIS).

I would actually recommend you to go through the process and let them install:

  • An ISAPI URL rewriting module

or if that doesn't work (for any reason):

  • Let them point the HTTP 404 of your web to a custom 404.asp, read the referer and redirect with a HTTP 301 (Moved Permanently) to your new location.

If none of this is an option for you, I can think about another possibility. I haven't actually tried that so I'm not 100% sure if it will work, but in theory it sounds good ;)

You could make in your global.asa in the Session_OnStart event a Response.Redirect or change the header of your response to a HTTP 301. This will actually only work for new users and not fix real 404 errors. Sorry, for the pseudo code, but it's a while ago that I had anything to do with classic ASP and I think you'll get what I mean ;)

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

Hope that helps.


I recommend using URL Rewrite for that, see the following blog about it, in particular "Site Reorganization":

http://blogs.msdn.com/b/carlosag/archive/2008/09/02/iis7urlrewriteseo.aspx

For more info about URL Rewrite see: http://www.iis.net/download/URLRewrite


You can try ISAPIRewrite since it's classic ASP + IIS6 http://www.isapirewrite.com/

They have a lite version which is free, probably good enough for your use.


urlrewrite will only work if you can install a dll on the server

one of these articles will help

http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=qRR&q=url+rewrite+classic+asp&btnG=Search&aq=f&oq=&aqi=g-m1

basically you have to point 404 errors to an error page which will parse the incoming querystring / post info and redirect user to correct location with incoming parameters added.

variations on that theme will be found in the examples fro google.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号