2

request.servervariables( "HTTP_HOST")からドメインの第2レベルの部分のみを抽出する必要があります。これを行うための最良の方法は何ですか?

4

4 に答える 4

1
If Len(strHostDomain) > 0 Then      
    aryDomain = Split(strHostDomain,".")

    If uBound(aryDomain) >= 1 Then
        str2ndLevel = aryDomain(uBound(aryDomain)-1)
        strTopLevel = aryDomain(uBound(aryDomain))          
        strDomainOnly = str2ndLevel & "." & strTopLevel
    End If
End If

私が必要としているものには機能しますが、.co.uk や、トップ レベルに 2 つの部分が期待される他のドメインは処理しません。

于 2008-10-13T05:00:05.100 に答える
1

これは正規表現で解決できます。

サーバー変数には有効なホスト名のみを含めることができるため、文字列の検証HTTP_HOSTについては気にする必要はなく、その構造を見つけることだけを気にする必要があります。したがって、正規表現はかなり単純に保たれていますが、より広いコンテキストでは確実に機能しません。

また、構造は3.2.1それぞれ、第 3 レベル、第 2 レベル、および第 1 レベル (トップレベル) ドメイン用です。

トップレベル ドメインには 2 文字以上 (.comまたは など.de)、または概念的には のような組み合わせを含めることができます.co.uk。これは技術的coにはもはや TLD ではありませんが、多くの英国のホスト名の第 2 レベル ドメインとして取得することにあまり関心がないように思われます。

だから私たちは持っています

  • オプション: 開始時のあらゆる種類のもの (サブドメイン)、ドット =^(.*?)\.?
  • 必須: 真ん中の部分 (第 2 レベル ドメイン)、ドット =(\w+)\.
  • 必須: 最後の短いビット (または 2 つの短いビット) =(\w{2,}(?:\.\w{2})?)$

これら 3 つのことは、グループ 1、2、および 3 でキャプチャされます。

Dim re, matches, match

Set re = New RegExp

re.Pattern = "^(.*?)\.?(\w+)\.(\w{2,}(?:\.\w{2})?)$"

Set matches = re.Execute( Request.ServerVariables("HTTP_HOST") )

If matches.Count = 1 Then
  Set match = matches(0)

  ' assuming "images.res.somedomain.co.uk"
  Response.Write match.SubMatches(0) & "<br>" ' will be "images.res"
  Response.Write match.SubMatches(1) & "<br>" ' will be "somedomain"
  Response.Write match.SubMatches(2) & "<br>" ' will be "co.uk"

  ' assuming  "somedomain.com"
  Response.Write match.SubMatches(0) & "<br>" ' will be ""
  Response.Write match.SubMatches(1) & "<br>" ' will be "somedomain"
  Response.Write match.SubMatches(2) & "<br>" ' will be "com"
Else
  ' You have an IP address in HTTP_HOST
End If
于 2008-10-13T07:17:33.263 に答える
0

レンタルしたサーバースペースからサブドメインの違いを確認したところ、http_host と server_name の両方がサブドメインを含むドメイン名を報告しました。

于 2009-10-15T10:13:29.163 に答える
-1

HTTP_HOST ヘッダーはドメイン (サブドメインを除く) のみを返すため、次のことができるはずです。

'example: sample.com
'example: sample.co.uk
host = split(request.serverVariables("HTTP_HOST"), ".")
host(0) = "" 'clear the "sample" part

extension = join(host, ".") 'put it back together, ".com" or ".co.uk"
于 2008-10-16T01:48:50.023 に答える