2017-06-04 2 views
2

Ich verwende den folgenden Code, um die URL der aktuellen Seite zu erhalten.Standarddokument von aktueller URL entfernen

thispage ="http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") & "?" & Request.Querystring 

Ich möchte überprüfen, ob Benutzer das Standarddokument (index.asp) am Ende der URL eingegeben hat und entfernen Sie sie (durch ohne Standarddokument in der Adresszeile auf die saubere URL umleiten).

Aber dieser Code enthält immer das Standarddokument, auch wenn nicht in Adressleiste z. Der obige Code gibt http://example.com/index.asp zurück, wenn ich http://example.com in der Adressleiste habe.

Wie bearbeite ich den obigen Code, um diese URLs zu unterscheiden?

+1

FYI der Code in der [akzeptierten Antwort] (https://stackoverflow.com/a/44358574/893670) entfernt nur Skriptnamen, nicht nur, wenn es 'index.asp'. Es wird problematisch sein, wenn Sie es als einen gemeinsamen Code verwenden. –

Antwort

1

Es ist eine komplizierte Aufgabe, in einer Umgebung, wo Sie nicht wissen, was das anwendbare Standarddokument ist, aber ich denke, es ist immer index.asp in Ihrem Fall.

Wenn ja, können Sie es mit etwas wie dem folgenden tun.

defaultFile = "/index.asp" ' leading slash is mandatory 
reqUrl = Request.ServerVariables("URL") 
reqQS = Request.ServerVariables("QUERY_STRING") 

'put a leading question mark if there's a query 
If reqQS <> "" Then 
    reqQS = "?" & reqQS 
End If 

'check if URL ends with "/index.asp" (case-insensitive comparison should be made) 
If StrComp(Right(reqUrl, Len(defaultFile)), defaultFile, vbTextCompare) = 0 Then 
    ' remove from reqUrl by preserving leading slash 
    reqUrl = Left(reqUrl, Len(reqUrl) - Len(defaultFile) + 1) 
End If 

thispage = "http://" & Request.ServerVariables("SERVER_NAME") & reqUrl & reqQS 
1

können Sie tun soemthing wie:

url = Request.ServerVariables("URL") 
url = Left(url, Len(url, Right(url, InStrRev(url, "/") - 1) 
thispage ="http://" & Request.ServerVariables("SERVER_NAME") & url & "/?" & Request.Querystring