2017-06-04 1 views
2

J'utilise le code suivant pour obtenir l'URL de la page en cours.Supprimer le document par défaut de l'URL actuelle

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

Je veux vérifier si l'utilisateur a tapé à la fin de l'URL du document par défaut (index.asp) et retirez-le (en redirigeant vers l'URL propre sans document par défaut dans la barre d'adresse).

Mais ce code contient toujours le document par défaut même s'il n'est pas tapé dans la barre d'adresse, par ex. le code ci-dessus renvoie http://example.com/index.asp lorsque j'ai http://example.com dans la barre d'adresse.

Comment puis-je modifier le code ci-dessus pour distinguer ces URL?

+1

Pour votre information le code dans la [réponse acceptée] (https://stackoverflow.com/a/44358574/893670) nom de simplement supprime le script, non seulement quand il est 'index.asp'. Ce sera un problème si vous l'utilisez comme un code partagé. –

Répondre

1

C'est une tâche complexe dans un environnement où vous ne savez pas ce que le document par défaut applicable est, mais je pense qu'il est toujours index.asp dans votre cas.

Si oui, vous pouvez le faire avec quelque chose comme ce qui suit.

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

vous pouvez faire soemthing comme:

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