2

以下代码应显示端口或服务器名称,而不是两者。

无论如何,我总是得到两个?

<!--#if expr="${SERVER_PORT} = 80" -->
<!--#echo var="SERVER_PORT"-->
<!--#else -->
<!--#echo var="SERVER_NAME"-->
<!--#endif -->

我也没有高兴地尝试过以下方法:

<!--#if expr="${SERVER_PORT} = '80'" -->
<!--#if expr="${SERVER_PORT} = /80/" -->

我如何让这个工作?

4

1 回答 1

4

如果您使用的是 IIS 6,请检查是否允许服务器端包含:

  1. 启动 IIS MMC
  2. 展开树并选择 Web 服务扩展
  3. 检查是否允许服务器端包含

如果是,请检查网站属性中是否启用了 SSI 脚本映射:

  1. 启动 IIS MMC
  2. 右键单击和站点上的属性
  3. 选择主目录选项卡
  4. 单击配置
  5. 验证扩展名.shtm, shtml and .stm是否映射到 C:\WINDOWS\system32\inetsrv\ssinc.dll 以及动词是否设置为GET and POST

更新:

IIS 不支持#if/#else/#endif构造或#set. IIS 6.0 的服务器端包含指令在此处记录:

IIS 服务器端包含指令(MSDN 库)

它们的所有意图和目的都与 IIS 5.1 中使用的相同。

您尝试使用的指令在 Apache 上受支持,但您应该与您的主机/管理员核实以确保它们已启用。有关更多信息,请参阅:

Apache 教程:服务器端包含简介

于 2009-08-28T11:58:05.757 回答