2

我在 Oracle Web 托管服务器中构建了我的 oracle apex 数据库应用程序。例如,它就像http://www.myapexhostingserver.com/pls/apex/f?p=4550:1:13225322000472

在这里,我创建了许多 apex 数据库应用程序。现在,我为每个顶级应用程序都有特定的域。目前,我已经在每个域设置中编写了一个重定向到我的 apex 应用程序。例如,

http://www.domain1.com has a redirect url set to http://myapexhostingserver.com/pls/apex/f?p=162:LOGIN:16888048444232

http://www.domain2.com has a redirect url set to http://myapexhostingserver.com/pls/apex/f?p=165:LOGIN:16888048444232

重定向不是谷歌友好的。但是我也不能为每个域购买 oracle 虚拟主机。还有其他好的解决方案吗?

这意味着,当我购买共享托管服务器时,我可以创建任意数量的 PHP 应用程序。但不确定这是否也可以在 oracle apex 中实现。

有人可以帮忙吗?

4

1 回答 1

6

使用搜索引擎可视化设计开发 Oracle Apex 应用程序

这是关于 APEX 应用程序 url 语法风格不同的问题的讨论。还解释了如何组织 APEX 工作空间命名空间,以显示如何使用单个数据库实例自定义应用程序 url。

评论: 一些互联网搜索可以产生您正在寻找的答案。有许多开发人员和咨询公司已经解决了在流行的规范 url 路径和 Oracle APEX 使用的符号之间转换的问题。

一些被证明有用的搜索词包括:oracle apex pretty urlurl mappinghttp url mapping plsql。最有用的指南是 Oracle PL/SQL 中的示例,但您也可以深入研究并在 Web 服务器引擎(即 Apache HTTP 服务器)上设置规则,重新解释 URL 请求,从而屏蔽 APEX 样式的地址。这不是必需的,但一些技术,如“url 重新映射”是可能的解决方案之一。

这篇文章不是关于搜索引擎优化 (SEO) 细节的指南,这可能与 OP 关于“Google 友好度”的问题有很大关系,但超出了本解决方案指南的范围。

Oracle APEX 网站搜索引擎是否友好?

直接从原始帖子中引用的评论值得研究和解决。这主要是一个错误的结论。

重定向不是谷歌友好的。

这实际上取决于您如何在 APEX 网站上进行设置。重定向是管理使用备用 url 命名方案的传入流量的一种方法,但这不是唯一的方法。

在 Apex 中完成的一些成功的博客和网站:

一些在线团体(例如APEX Ninjas的 APEX 开发人员团队)继续报告来自Google等搜索引擎的推荐量不断增长,但他们的 Oracle APEX 支持网站和博客的方式没有太多变化。

另一个很好的例子是活跃的 APEX 网站: “ASK Tom”,它是由 Oracle 的 Tom Kyte 创建的。该网站已在 APEX 上运行多年,并且对本网站页面的引用继续出现在搜索引擎结果页面上,采用“ASK Tom”网站中熟悉的 APEX 样式 url 格式。

使用更好的导航 URL 以提高清晰度

Web 服务器REDIRECTS是在 Oracle Apex 侦听器之上映射更清晰的 url 地址语法的一种方法。我们使用Abyss Web Server Engine,这是一个轻量级的 http 服务器,位于我们公司 APEX 应用服务器的前端。这不是绝对必要的,但我们选择它是因为它简化了对单个 Web 服务器任务的管理。重定向对我们也很有效。尽管我们没有进一步探索,但高级功能(例如virtual hosting并且url rewriting rules可能会带您进一步了解在同一 Apex 侦听器实例上分离多个 TLD(主域)或 C-NAME(子域)的要求)。

APEX 应用程序中最丑陋的 URL 表单是默认的。它是可破译的,但对人眼不友好或简单到难以记住。这是分配给我的应用程序页面的 URL 示例截图,HOME名为:APEX-LAB-PUB

默认 Oracle APEX 应用程序和页面标识

这是 Oracle APEX Web 服务器将解释的 URL 的常见格式。所以要遵守的一般格式是子句之后的所有内容: f?p=...

http://somedomain.com/pls/apex/f?p=1312786:5:987529480

通过使用设置ALIAS名称的替代选项,您可以在相同的布局中创建快捷 url 表单,但具有人类可读的别名分配:

别名 Oracle APEX 应用程序和页面标识

这很好,但还有一种常见做法是使用 Oracle Apex 的本机 REST Web 服务侦听器,以便内部和外部链接看起来更简单。简化的 url 语法还可以使设置重定向挂钩更清晰、更有条理。

使用 REST Web 服务组织 APEX 应用程序网站

为了开发这个示例,我使用了Oracle 的免费 Apex 托管层。虽然它对可用的功能有一些限制,但在这个平台的 Apex 监听器上启用了 RESTful Web 服务,这正是我们所需要的。

将 Web 服务 URI 映射到 Apex URL 请求

这是我们将使用的 url 语法,看起来像这样:

https://apex.oracle.com/pls/apex/...(workspace)/...(uri request)

统一资源标识符 (URI)

这是将附加到 Oracle Apex 托管侦听器的基本 URL 末尾的部分。下面的示例只是一个通用模板:

Generic URI Syntax                       This Solution URI

hr/employees/{ID}                        display/{app}/{page}
|_|_________|____|                       |______|____________|
 |     |      |                              |        |
 |     |       -Handler Bind Variable        |         -Handler Bind Variable(s)
 |     |                                     | 
 |      - URI Template                        - URI Template
 |
  - Module URI Prefix


-- RESTful Service Design Summary

Module Name:           superEasyURL
URI Prefix (optional): (none)
URI Template:          display/{app}/{page}
Handler Method:        GET
Handler Source Type:   PL/SQL

Handler Source:

declare
   url varchar2(500);
   baseurl constant  varchar2(2000):= 
        'https://apex.oracle.com/pls/apex/f?p=';

begin
   url:= baseurl || :app || ':' || :page;

   :URL := url;
   :STATUS := 303;

end;

注意:您还需要OUT为此 REST 服务设置两个参数,以表示上述 PL/SQL 语句中的两个绑定变量,用于 和 的URLSTATUS

superEasyURL REST 服务输出参数

关于 HTTP 303 状态标头代码

还有另一种称为HTTP 303的 HTTP 状态代码。您可以使用 APEX 来交付不是重定向的页面和内容。Oracle Application Express 及其 RESTful Web 服务可以接收在后端转换为 APEX 格式的传统 url 请求。

303 See Other已被提议作为响应请求的一种方式,该 URI 根据语义 Web 理论标识真实世界的对象(另一种是使用哈希 URI)。

例如,如果http://www.example.com/id/alice标识了一个人,Alice,那么服务器用 来响应 GET 请求是不合适的200 OK,因为服务器不能自己传递 Alice。相反,服务器会发出一个 303 See Other 响应,该响应重定向到一个单独的 URI,提供对 Alice 的描述。

参考摘录:Wikipedia.com

工作示例的演示

这是在我个人的 Oracle 托管工作区中创建的示例。这是将由之前构建的 REST 服务解释的 url。

https://apex.oracle.com/pls/apex/rgpascual/display/{app}/{page}
                                |_________|
                                     |
                                     |
                - Workspace ID String (required by the listener) -

请注意,在共享实例上,需要额外引用用户的工作空间名称才能进行此转换。我不是 100% 确定它是否需要,但我能够通过在最终路径引用中使用它来完成这个演示。

服务翻译前的简单 URL 路径

显示:HOME来自 APEX-LAB-PUB 应用程序的页面(别名)(别名为:)APEXLABPUB01

输出对现有应用程序和页面别名的调用

结论、问题和一般建议

这篇文章的努力提供了使用漂亮的 url 语法来表示 Apex 应用程序网站中的导航链接的可能性。与 Oracle 定义的默认符号不同,导航链接列表可能如下所示:

注意:这些链接不起作用。它们只是为了说明此解决方案的优点。

  • 实际请求的 URL:
    someapexserver.../pls/apex/mywork/display/new-app/home

  • 关于我们

    实际请求的 URL:
    someapexserver.../pls/apex/mywork/display/new-app/about

  • 接触

    实际请求的 URL:
    someapexserver.../pls/apex/mywork/display/new-app/contactus

  • 同事

    实际请求的 URL:
    someapexserver.../pls/apex/mywork/display/new-app/associates

  • 业务运营

    实际请求的 URL:
    someapexserver.../pls/apex/mywork/display/new-app/businessops

现在,使用在该解决方案的初始设计中选择的 URI 模板,引用链接和导航是统一且一致的。

附加问题:单个 Apex 实例的应用程序容量

还有一个关于 Oracle Apex 管理在单个实例中创建的应用程序的方式的问题。

...意思是,当我购买共享托管服务器时,我可以创建任意数量的 PHP 应用程序。但不确定这是否也可以在 oracle apex 中实现。

您应该考虑查看 Oracle 发布的 Apex 文档,以了解 Apex 安全框架如何影响可能性或组织从同一数据库实例创建的多个应用程序。

Oracle APEX 登录屏幕

不过有几点需要注意:

  • 单个数据库安装,或者INSTANCE可以包含多个称为WORKSPACES. 默认情况下,工作区无法看到其他工作区中的内容,但其中的应用程序可以共享对后端相同数据库模式的访问。

  • AWORKSPACE可以包含任意数量的 APEX 应用程序。每个启用登录安全的应用程序都可能有自己的用户身份验证,也可能使用“本机”身份验证过程。无需进一步配置,同一工作区中的应用程序用户帐户将有权访问同一工作区中的其他应用程序。

  • 每个USER NAMESPACESWorkspace 都是独立的,即在两个或多个不同的 Workspace 之间可能有两个同名的用户帐户。(在 WORKSPACE1 和 WORKSPACE2 中命名的用户ADMIN不是同一个用户。)

  • NAMED DATABASE USERS可以访问其他多个 Apex 工作区。以这种方式定义的用户在允许其访问的每个工作空间和应用程序中都是唯一的。定义为命名数据库用户的访问用户在给定数据库中被定义为唯一的INSTANCE

因此,总而言之,Apex 旨在支持多个应用程序,类似于在单个共享主机设置上托管。但是,如果您正在寻找您在 OP 中描述的控制量,您的共享主机很可能是您自己的Dedicated Server解决方案、 VPS(虚拟专用服务器)或AWS(亚马逊网络服务)主机。

您需要一台对服务器资源有足够访问权限的主机,以便: (a) 允许在主机上安装 Oracle 数据库软件。(b) 允许配置(打开和/或关闭)服务器网络端口。(c) 有足够的服务器资源来支持已安装的数据库实例的活动操作以及由伴随的基于 HTTP 的侦听器服务的 Web 请求。

如果您希望您的安装管理多个中等大小和流量的 Web 应用程序,您将需要比您选择的 Oracle 数据库版本和版本的安装说明中描述的最低服务器规格更多的东西。

于 2014-04-20T10:17:20.157 回答