2017-06-04 21 views
2

次のコードを使用して現在のページのURLを取得します。現在のURLからデフォルト文書を削除します

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

は、私は、ユーザーがURLの末尾に既定のドキュメント(index.asp)を入力したかどうかを確認し、(アドレスバーに既定のドキュメントなしできれいなURLにリダイレクトすることで)それを削除したいです。

しかし、このコードではアドレスバーに入力していない場合でもデフォルトのドキュメントが常に含まれています。アドレスバーにhttp://example.comがある場合、上記のコードはhttp://example.com/index.aspを返します。

これらのURLを区別するために上記のコードを編集するにはどうすればよいですか?

+1

[受理された回答](https://stackoverflow.com/a/44358574/893670)のコードは、単に「index.asp」のときだけでなく、スクリプト名も削除します。共有コードとして使用すると問題になります。 –

答えて

1

もしそうなら、あなたは次のようなことをすることができます。

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

ようにあなたはsoemthingを行うことができます:それはあなたが適用される既定のドキュメントがあるかわからないが、私はそれは常にあなたのケースでindex.aspだと思う環境での複雑な作業だ

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