我在oracle虚拟主机服务器中构建了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
重定向不适合Google使用。但是我也不能为每个域购买oracle虚拟主机。还有其他好的解决方案吗?
这意味着,当我购买共享托管服务器时,我可以创建任意数量的PHP应用程序。但是不确定在Oracle apex中是否也可以这样做。
有人可以帮忙吗?
这是有关APEX应用程序URL语法样式不同的问题的讨论。还解释了APEX工作空间名称空间的组织方式,以显示如何使用单个数据库实例自定义应用程序URL。
注释: 某些Internet搜索可以提供您正在寻找的答案。有许多开发人员和咨询专家解决了在流行的规范URL路径与Oracle APEX使用的符号之间进行转换的问题。
这证明为有效的搜索词包括:oracle apex pretty url
,url mapping
,和http url mapping plsql
。最有用的指南是Oracle PL / SQL中的示例,但您也可以更深入地研究并在Web服务器引擎(即Apache HTTP Server)上设置规则,以重新解释URL请求,从而屏蔽APEX样式的地址。这不是必需的,但是某些技术(例如“ URL重新映射”)是可能的解决方案。
这篇文章不是关于搜索引擎优化(SEO)细节的指南,它可能与OP关于“ Google Friendliness”的问题有很深的联系,但不在本解决方案指南的范围之内。
直接从原始帖子中引用的评论值得研究和解决。这主要是一个错误的结论。
重定向不适合Google使用。
这实际上取决于您如何在APEX网站上进行设置。重定向是使用备用URL命名方案管理传入流量的一种方法,但这不是唯一的方法。
Apex中成功完成的一些博客和网站:
诸如APEX开发人员团队和APEX Ninjas之类的一些在线组织继续报告说,来自搜索引擎(如Google)的引荐不断增长,而Oracle APEX支持的网站和博客的方式没有太多变化。
另一个很好的例子是活跃的APEX网站: “ ASK Tom”,由Oracle的Tom Kyte创建。该站点已经在APEX上运行了很多年,并且对该站点上页面的引用继续出现在搜索引擎结果页面上,该页面是“ ASK Tom”网站上熟悉的APEX样式网址格式。
Web服务器REDIRECTS
是一种在Oracle Apex侦听器之上映射更清晰的URL地址语法的方法。我们使用Abyss Web服务器引擎,它是位于我们公司APEX应用服务器前端的轻量级http服务器。并不是绝对必要的,但是我们选择它是为了简化对单个Web服务器任务的管理。重定向对我们也很好。虽然我们还没有进一步探讨,先进的功能,如virtual hosting
和url rewriting rules
可能采取进一步您对您的要求,在相同的顶点监听器实例分离出多个顶级域名(主域)或C-名称(子域)。
默认情况下,APEX应用程序中最丑陋的URL形式。它是可辨认的,但对人眼不友好,或者不够简单,难以记住。这是分配给HOME
我的应用程序页面的URL的示例照片:APEX-LAB-PUB
这是Oracle APEX Web服务器将解释的URL的通用格式。因此,要观察的一般格式是子句之后的所有内容: f?p = ...
http://somedomain.com/pls/apex/f?p=1312786:5:987529480
通过使用设置ALIAS
名称的替代选项,您可以在相同的布局中创建快捷的URL形式,但具有易于理解的别名分配:
这很好,但是还有一种常见的做法是使用Oracle Apex的本机REST Web Service侦听器,以使内部和外部链接看起来更简单。简化的url语法还可以使设置重定向钩子更加整齐有序。
为了开发此示例,我使用了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语句的值两个绑定变量URL
和STATUS
:
关于HTTP 303状态标头代码
还有另一种HTTP状态代码,称为HTTP 303。您可以使用APEX交付不是重定向的页面和内容。Oracle Application Express及其RESTful Web服务可以接收传统的url请求,这些请求会在后端转换为APEX格式。
303 See Other已被提出作为一种响应请求的一种方式,该请求根据语义网理论响应标识了真实世界对象的URI(另一种方式是使用哈希URI)。
例如,如果http://www.example.com/id/alice标识了一个人Alice,则服务器使用来响应GET请求将是不合适的
200 OK
,因为服务器无法自己传递Alice。相反,服务器将发出303 See Other响应,该响应将重定向到提供有关人员Alice的描述的单独URI。参考摘录:Wikipedia.com
这是在我个人的Oracle托管工作区中创建的示例。这是将由先前构建的REST服务解释的URL。
https://apex.oracle.com/pls/apex/rgpascual/display/{app}/{page} |_________| | | - Workspace ID String (required by the listener) -
请注意,在共享实例上,需要附加引用用户的工作区名称才能进行此转换。我不是100%不确定是否需要它,但是我能够通过在最终路径引用中使用它来完成此演示。
显示:HOME
APEX-LAB-PUB应用程序中的页面(别名)(别名:)APEXLABPUB01
。
这篇文章的努力提供了使用漂亮的url语法表示Apex应用程序网站内的导航链接的可能性。代替Oracle定义的默认符号,导航链接列表可能类似于:
注意:这些链接不起作用。它们只是为了说明此解决方案的优势。
家
实际请求的网址:
someapexserver ... / pls / apex / mywork / display / new-app / home关于我们
实际请求的网址:
someapexserver ... / pls / apex / mywork / display / new-app / about联系
实际请求的网址:
someapexserver ... / pls / apex / mywork / display / new-app / contactus合伙人
实际请求的网址:
someapexserver ... / pls / apex / mywork / display / new-app / associates业务运营
实际请求的网址:
someapexserver ... / pls / apex / mywork / display / new-app / businessops
现在,使用此解决方案的初始设计中选择的URI模板,引用链接和导航是统一且一致的。
附加问题:单个Apex实例的应用程序容量
关于Oracle Apex管理在单个实例中创建的应用程序的方式还有一个问题。
……意味着,当我购买共享托管服务器时,我可以创建任意数量的PHP应用程序。但是不确定在Oracle apex中是否也可以这样做。
您应该考虑查看Oracle发布的Apex文档,以了解Apex安全框架如何影响可能性或组织从同一数据库实例创建的多个应用程序。
但是,需要注意一些事项:
单个数据库安装,或INSTANCE
可以包含称为的多个分区WORKSPACES
。默认情况下,工作区看不到其他工作区中的内容,但是其中的应用程序可以共享对后端相同数据库模式的访问。
一个WORKSPACE
可以包含任意数量的APEX应用程序。每个启用了登录安全性的应用程序都可以拥有自己的用户身份验证,也可以使用“本地”身份验证过程。无需进一步配置,同一工作区中的“应用程序用户”帐户将有权访问同一工作区中的其他应用程序。
在USER NAMESPACES
每个工作区的是分离的,即,可以存在两个用户帐户与两个或多个不同的工作区之间的相同的名称。(ADMIN
在WORKSPACE1和WORKSPACE2中都命名的用户不是同一用户。)
NAMED DATABASE USERS
可能可以访问其他多个Apex工作区。用户定义的这种方式在每个工作空间和允许其访问的应用程序中都是唯一的。定义为“命名数据库用户”的访问用户在给定数据库中定义为唯一INSTANCE
。
因此,总而言之,Apex旨在支持多个应用程序,类似于在单个共享托管设置中托管。但是,如果您正在寻找OP中描述的控制量,则您的共享主机很可能是您自己的Dedicated Server
解决方案,即 VPS
(Virtual Private Server)或AWS
(Amazon Web Services)主机。
您将需要一台具有对服务器资源的足够访问权限的主机,以便:(a)允许在该主机上安装Oracle数据库软件。(b)允许配置(打开和/或关闭)服务器网络端口。(c)足够的服务器资源来支持已安装的数据库实例的活动操作以及由随附的基于HTTP的侦听器提供服务的Web请求。
如果要让您的安装管理多个大小适中且已进行流量管理的Web应用程序,则将需要的资源远远超出您选择的Oracle数据库版本的安装说明中所述的最低服务器规格。