作成者: Randall DuBois
Microsoft Internet Explorer (IE) バージョン 9 のプレビュー リリースには、リッチ メディア アプリケーション用の追加の MIME タイプのサポートが含まれています。 追加の MIME の種類をサポートするには、MIME の種類を IIS サーバーに追加する必要があります。
IE 9 では、次の追加 MIME の種類がサポートされています。
ファイル名の拡張子 | MIME の種類 |
---|---|
.svg | image/svg+xml |
.xht | application/xhtml+xml |
.xhtml | application/xhtml+xml |
これらの MIME の種類を IIS サーバーに追加するには、次の手順を実行します。
- IIS マネージャーを使用して手動で追加します。 詳細については、「IIS 7 以降で MIME の種類を構成する」を参照してください。
- Bill Staple のブログ投稿「IIS7 Web.config で MIME の種類を追加する方法」で説明されているとおりに web.config ファイルを更新します。
- この記事に含まれているスクリプトを使用します。
AddMimeTypes スクリプトの使用
また、この記事に含まれるスクリプトを使用し、Windows 2000 以降を含む Windows のバージョンに MIME の種類を追加することもできます。 スクリプトでは WMI が使用され、MIME の種類がローカル サーバーまたはリモート サーバーに追加されます。
AddMimeTypes スクリプトを使用して IE 9 の MIME の種類を IIS サーバーに追加するには:
作成ツールまたはテキスト エディターを使用して新しいスクリプト ファイルを作成します。
次のセクションからスクリプト ファイルの内容をコピーします。
スクリプトの内容を新しいスクリプト ファイルに貼り付けます。
スクリプト ファイルを AddMimeTypes.vbs として保存します。
コマンド プロンプトに次のコマンドを入力します。
cscript AddMimeTypes.vbs [RemoteServerName]
[RemoteServerName]
> を、MIME の種類を追加するリモート コンピューターの名前に置き換えます。Note
スクリプト ファイルが保存されているフォルダーが Path 環境変数に含まれていない場合、コマンドでスクリプトへの完全なパスを指定するか、コマンドを実行する前にディレクトリをフォルダーに変更する必要があります。
IIS マネージャーを使用して MIME の種類が追加されたことを確認します。
AddMimeTypes.vbs スクリプト
' File: AddMimeTypes2.vbs
' Copyright Microsoft Corp. 2010
'
' This script adds the following Mime types to the root of a local or remote
' server.
'
' (0) .svg image/svg+xml
' (1) .xht application/xhtml+xml
' (2) .xhtml application/xhtml+xml
'
' Usage:
' cscript AddMimeTypes.vbs [RemoteServerName]
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
OPTION EXPLICIT
DIM strServer, objWMIService, objOperatingSystem, colOperatingSystems
DIM osVersion, iisVersion, objMimeMap, objMimeTypes, Mime, i
DIM objShell, strInetsrvDir, strInetpubScriptsDir
DIM numMimeTypes, numExistingMimes, mimeExists(2)
CONST ADS_PROPERTY_UPDATE = 2
IF WScript.Arguments.Length = 1 THEN
strServer = WScript.Arguments( 0 )
ELSE
strServer = "."
END IF
iisVersion = "0"
' What version of Windows and IIS am I using? If I am on IIS 5.x/6 use adsutil.vbs
' If I am on IIS 7 and later use appcmd
SET objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}" _
+ "!\\" + strServer + "\root\cimv2")
SET colOperatingSystems = _
objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
FOR EACH objOperatingSystem IN colOperatingSystems
osVersion = objOperatingSystem.Version
strInetsrvDir = objOperatingSystem.SystemDirectory + "\inetsrv"
strInetpubScriptsDir = objOperatingSystem.SystemDrive _
+ "\inetpub\AdminScripts"
NEXT
IF ( 0 = Strcomp(strServer,".") ) THEN
strServer = "localhost"
END IF
i = InStr(osVersion,"6.")
IF ( i = 1 ) THEN
iisVersion = "7"
END IF
i = InStr(osVersion,"5.")
IF ( i = 1 ) THEN
iisVersion = "5"
END IF
i = InStr(osVersion,"5.2")
IF ( i = 1 ) THEN
iisVersion = "6"
END IF
SET objShell = WScript.CreateObject("WScript.Shell")
SELECT CASE iisVersion
CASE "7"
' Run appcmd
objShell.Run(strInetsrvDir + _
"\appcmd.exe set config -section:system.webServer/staticContent /+_""[fileExtension='.svg',mimeType='image/svg%2Bxml']""")
objShell.Run(strInetsrvDir + _
"\appcmd.exe set config -section:system.webServer/staticContent /+""[fileExtension='.xht',mimeType='application/xhtml%2Bxml']""")
objShell.Run(strInetsrvDir + _
"\appcmd.exe set config -section:system.webServer/staticContent /+""[fileExtension='.xhtml',mimeType='application/xhtml%2Bxml']""")
CASE "6", "5"
' Use ADSI to add the MIME types.
' Can't use adsutil because they will destructively overwrite instead of appending
SET objMimeMap = GetObject( "IIS://" + strServer + "/MimeMap" )
objMimeTypes = objMimeMap.GetEx("MimeMap")
' Check to see if the MIME types already exist
mimeExists(0)=0
mimeExists(1)=0
mimeExists(2)=0
numExistingMimes=0
CheckIfMimeTypeExists(objMimeMap)
numExistingMimes=mimeExists(0)+mimeExists(1)+mimeExists(2)
IF ( 3 = numExistingMimes ) THEN
WScript.Echo("All extensions currently have mime types registered. Complete.")
WScript.Quit
END IF
' For extensions that don't have registered MIME types, add them
numMimeTypes = UBound(objMimeTypes)
REDIM PRESERVE objMimeTypes(numMimeTypes+3-numExistingMimes)
i = numMimeTypes+1
IF ( 0 = mimeExists(0) ) THEN
SET objMimeTypes(i) = CreateObject("MimeMap")
objMimeTypes(i).Extension = ".svg"
objMimeTypes(i).MimeType = "image/svg+xml"
i = i+1
ELSE
WScript.Echo("Mime type for .svg already exists")
END IF
IF ( 0 = mimeExists(1) ) THEN
SET objMimeTypes(i) = CreateObject("MimeMap")
objMimeTypes(i).Extension = ".xht"
objMimeTypes(i).MimeType = "application/xhtml+xml"
i=i+1
ELSE
WScript.Echo("Mime type for .xht already exists")
END IF
IF ( 0 = mimeExists(2) ) THEN
SET objMimeTypes(i) = CreateObject("MimeMap")
objMimeTypes(i).Extension = ".xhtml"
objMimeTypes(i).MimeType = "application/xhtml+xml"
ELSE
WScript.Echo("Mime type for .xhtml already exists")
END IF
objMimeMap.PutEx ADS_PROPERTY_UPDATE, "MimeMap", objMimeTypes
objMimeMap.SetInfo()
CASE ELSE
WScript.Echo("Unsupported IIS version")
END SELECT
SUB CheckIfMimeTypeExists(MimeMap)
objMimeTypes = MimeMap.GetEx("MimeMap")
FOR EACH Mime IN objMimeTypes
SELECT CASE LCase(Mime.Extension)
CASE ".svg"
mimeExists(0) = 1
CASE ".xht"
mimeExists(1) = 1
CASE ".xhtml"
mimeExists(2) = 1
END SELECT
NEXT
END SUB