サーバー側でのブラウザー スニッフィングは、信頼性が低く、特定のブラウザーがアプリを使用できないことを証明できないため、お勧めできません。
まず、特定のブラウザー (Opera など) は、別のユーザー エージェントを送信できます (送信する予定です)。これは、ブラウザーの「互換性」を高めるためです (つまり、使用する予定の技術そのものを回避します)。
第二に、それが必ずしも動作しないのは Internet Explorer だからというわけではありません。また、Web アプリと互換性がある可能性が非常に高い Internet Explorer 9 も除外されます。
代わりに、クライアント側で、期待する機能が実際にあることを確認する必要があります。あなたは依存していdocument.getElementsByClassName
ますか?これを試して:
if (document.getElementByClassName == undefined)
document.location.replace('Unsupported browser URL here');
あなたは依存してい<canvas>
ますか?これを試して:
if (document.getElementById('canvas-element').getContext == undefined)
document.location.replace('Unsupported browser URL here');
複雑な CSS3 ルールに依存していますか? そのようなルールで、レガシー ブラウザ向けのメッセージを非表示にします。
.error-message:not(.unexistant-class) {
/* this rule will be dropped by browsers that don't support the not()
selector */
display:none;
}
つまり、ユーザー エージェントの代わりに機能をチェックします。クライアントが必要なすべての機能を備えている場合、それを置き去りにする理由はありません。