首页 > 解决方案 > 无法使用 4D 更改默认主页

问题描述

我正在尝试按照本教程从 4d 服务器网络开始。 http://doc.4d.com/4Dv16/4D/16/Serveur-Web.200-3246839.fe.html

我禁用了默认主页index.html(甚至删除了WebFolder文件夹中的实际文件),然后在 On Web Connection 方法中添加了这几行

C_TEXT($1)
Case of
  :($1="/")
     WEB SEND FILE("new_index.html")
End case

但是当我转到localhost:8080/时,我仍然得到 4d 默认页面, 然后我发现该方法甚至没有被调用,除非我在 url 中添加一些东西(比如 localhost:8080/something)

标签: 4d-database

解决方案


如果您在数据库设置中将 index.html 列为默认主页,那么它将加载该页面(有时如果它不存在,它会创建它)。

此外,使用 html 扩展名将不会运行任何动态代码,要调用代码,您必须使用s html 扩展名或文件必须不存在(未找到文件时触发 OWA/OWC)。

此技术提示仍然适用,并很好地概述了 Web 连接(和 Web 身份验证)方法在什么情况下运行:
技术提示:如何跳过 HTTP 并重定向到 HTTPS:第 2 部分(Web 诱饵文件夹)

引用:

On Web Authentication 数据库方法(默认情况下)仅在以下情况下调用:

  • 当 4D 收到以 4DACTION/ 开头的 URL 时
  • 当 4D 收到以 4DMETHOD/ 开头的 URL 时
  • 当 4D 收到以 4DCGI/ 开头的 URL 时
  • 当 4D 收到请求不存在的静态页面的 URL 时
  • 当 4D 处理半动态页面中的 4DSCRIPT 标签时
  • 当 4D 基于半动态页面中的方法处理 4DLOOP 标签时。

注意:On Web Authentication 数据库方法期望在 $0 中返回布尔值;True = 接受请求,False = 拒绝请求。如果不返回 $0,则默认值为 True,这意味着所有请求都被接受。

在以下情况下(默认情况下)调用 On Web Connection 数据库方法:
当将浏览器连接到在上下文模式下运行的 4D Web 服务器时。使用 /... URL 调用数据库方法。

  • 当 4D 收到 /4DMETHOD URL 时。Web 服务器切换到上下文模式,并使用 $1 中的 /4DMETHOD/MethodName URL 调用数据库方法。
    当 4D 收到 /4DCGI URL 时。使用 $1 中的 /4DCGI/ URL 调用数据库方法。
  • 当使用未找到的 / 类型的 URL 调用网页时。使用 URL 作为 $1 调用数据库方法。
  • 当使用 / 类型的 URL 调用网页时,默认情况下没有定义主页。使用 URL 作为 $1 调用数据库方法。

因此(默认情况下)如果 Web 访问者正在请求一个页面,并且该页面存在于 URL 中指定位置的 web 文件夹中,则该页面将自动发送回客户,无需任何特殊处理。这在大多数情况下都很好,但开发人员可以通过实现 web 诱饵文件夹来更好地控制请求。

因此,如果您希望 / url 运行您的代码,您可以使用以下任一方法:

  • 使用 index.shtml(注意 shtml 中的s
  • 删除数据库设置中的条目(因此默认页面字段为空)

在 4D 中修改 Web 配置选项时,用户设置将优先于数据库设置

如果启用了用户设置,请确保同时检查用户设置和数据库设置。

可通过以下菜单选项访问用户设置:

在此处输入图像描述

或者

在此处输入图像描述


推荐阅读