ASP 取得网址、截取字符串(含代码)

小弟对ASP一知半解,我想做的操作是这样的:取得上一页网址,比如说:
http://www.xxx.com/article.asp?id=1003

然后取得
article.asp?id=1003(这一段的长度并不是固定的)
要如何去做?

下面是我写的,代码肯定不对:
1.reUrl是不是应该指定类型?
2.left(str,4)只能取得固定的,那么非固定的要怎么来?

<% reUrl=request.servervariables ("http_referer") response.Write(reUrl) response.Write(left(request.servervariables ("http_referer"),4))
%>
其实简单的来讲,是这样的:
我有一个网站因为换了新域名,访问旧域名自然404错误。而我已经把404页面指定了,我现在想做的就的是,新网址 + 404页截取的字符串,组成新网址跳转。

貌似这个方法可以取到:
Request.servervariables("QUERY_STRING")
现在显示是这个:
404;
http://www.xxx.com:80/article.asp?id=1003


现在我只想得到article.asp?id=1003这个怎么得?

再+50分了,求解!
最新回答
挂科比挂科难

2024-04-15 00:04:02

可以用正则表达式来做
<%
dim url,path
'url为上一页地址
'path为要获取的字符串,一定要先声明变量
Url=request.servervariables ("http_referer")
sub getPage(url)
set reg=new regexp
reg.Pattern=".+/"
set route=reg.Execute(url)
route=route.item(0).value
'这样就会获得从"http"(url开始处)到最后一个"/"
'比如'
http://zhidao.baidu.com/question/53962926.html

'会获取到
http://zhidao.baidu.com/question/

'然后获取route长度
route_length=len(route)
最后从route_length处截取字符串
path=mid(url,route_length)
end sub
'然后调用子函数
getpage url
%>
完美解决,我就是用它做的搜索引擎
还有什么不懂的可以留言.
接住路过的风

2024-04-15 00:00:00

能想到的方法有2个
1是你跳过页面 直接分析日志里的东西 就能达到你的目的
2是做一个出错页面 把404的错误指向这个页面

然后皮之不存,毛将焉附。页面都没有 没法谈程序吧。

找到最后一个/截取其后字段 如果说有问题可能就是传值后面也带/概率很小 不放心可以做一个检测和替换
<%
url=Request.ServerVariables("HTTP_REFERER")

If InStr(url,"/")<=0 Then

response.write "网址错误"
response.end
End if
arr=Split(url,"/") '用/分割
n=ubound(arr) '求得最后一个/

response.write arr(n) '输出
%>
幼稚园里的幼稚鬼

2024-04-15 00:04:14

你想域名转向,你知道IIS或其它web服务器的重定向功能吗?

使用web服务器重定向有两个好处:
1.绝对的SEO友好,搜索引擎不会删除已经在老域名下的收录网页。
2.减轻服务器的负担,这点是然后的,要是使用404中的网页重定向会至少执行两个asp网页.
3.也许不是最重要的吧,可以让用户更快的访问,而不是等到得到错误404后再转向。

以上只是我个人对解决你的问题的不同看法,要是通过404写代码,楼上的给出很好的答案。

如果你决定采用我提出的方法请发百度消息给我,我会尽我所知,写出IIS或其它web服务器的重定向的方法的

对回答的内容有问题,或认为不妥,百度消息我。
(在消息的内容里加上问题的网址哦)
花颜诱人醉

2024-04-15 00:02:25

On Error Resume Next
Dim strTemp

If LCase(Request.ServerVariables("HTTPS")) = "off" Then
strTemp = "http://"
Else
strTemp = "https://"
End If

strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")

strTemp = strTemp & Request.ServerVariables("URL")

If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)

strTemp = LCase(strTemp)
蜜糖

2024-04-15 00:02:00

三楼的可以,但好像复杂了点。
直接点可以是
path=Mid(url,InStrRev(url,"\")+1)