EZ Publish/EZ Publish URL 翻译
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
本条目阐述了eZ Publish 中可以使用的不同类型的URL 以及URL 翻译如何工作。默认情况下,eZ Publish可以处理两种URL:
• 系统URL
• 虚拟URL
系统URL[ ]
系统URL 告诉eZ Publish 应该运行哪个模块并执行哪个视图。它可能包含传送给视图的附加的参数/值。每个系统URL 都遵循相同的结构并且可以被分割为以下部分:
• 模块名
• 视图名
• 视图参数
视图参数是可选的且可以由有序参数和/或无序参数构成。在“模块和视图”章节有完整的介绍。以下的模型演示了不同URL 部分的序列。
http://www.example.com/index.php/<module>/<view>/[<ordered_view_parameters>]/ [<unordered_view_parameters>]
下例演示了典型的系统URL:
http://www.example.com/index.php/content/edit/13/3
这个URL 要求eZ Publish 运行"content"模块并执行"edit"视图。"13"和"3"是将要传送给视图的参数。注意,确切的URL 格式取决于“访问方法”和WEB 服务器的配置方法。例如:WEB 服务器可以被配置以隐藏"index.php"。
虚拟URL[ ]
虚拟URL(也被称为URL 别名或友好的URL)其实只是现存的系统URL 的别名。虚拟URL 更友好,更容易记忆且有时比系统URL 更短。系统URL 揭示了很多有关eZ Publish 被要求做何种处理的信息,虚拟URL 却不显露任何系统级别的信息。虚拟URL 不能如系统URL 一样分解。下例演示了典型的虚拟URL:
http://www.example.com/company/about
系统中其实有两种类型的虚拟URL,一种是系统自动生成的,另外一种是由站点管理员手动创建和维护的。然而,所有的虚拟URL 都会被等同处理。
从3.10 版本,系统开始支持“多语言虚拟URL ”。系统在一张由三个字段的数据库表中保管URL:
使用上表中虚拟URL 的真实地址可以如下:
http://www.example.com/company/about
根据上表,虚拟URL 会被系统在内部翻译为如下URL:
http://www.example.com/content/view/full/46
两个URL 都是正确的且会生成相同的输出,在本例中为节点46 的全视图。当使用虚拟URL 时,重定向/映射会在系统内部进行,因此用户不会经历重定向或是页面重载等问题。Language mask(语言掩码)在系统内部使用,被用来标记URL 别名所用的语言(与内容对象的语言掩码算法相同)。如果站点管理员为"content/search"创建一条虚拟URL,系统会在上表中添加如下记录:
实际的虚拟URL 为:
http://www.example.com/findme
根据上表,这个URL 会在系统内部被翻译为:
http://www.example.com/content/search
自动虚拟URL 的生成和维护[ ]
每次对象被发布,系统都会为对象的每个节点重新生成一个虚拟URL。如果对象存在于多种语言中,系统会为每种翻译生成虚拟URL。节点URL 的生成是基于节点在节点树中的位置和节点对象的对象名。节点虚拟URL 的生成完全由系统处理且不能在管理界面修改。下图演示了对象,节点以及对应的URL。
- 上图清楚地演示了虚拟URL 是如何被生成的。对于每个节点,系统生成一个路径(由"/"分割)。路径中的字符串为节点祖先节点所对应对象的名称和目标节点本身对应对象的名称。
- 特殊符号被转换为下划线且特殊字符由系统内建的字符翻译功能翻译。
- 例如:挪威字符"æ","ø"和"å"会被翻译为"ae","oe"和"aa"。如果系统要生成一个已经存在的虚拟URL,它会在新URL后简单地追加一个下划线从而消除重复URL 的风险。
- 自3.10 版本开始,可以在URL 中支持Unicode 且字符翻译不再需要因为大部分字符都允许出现在虚拟URL 中。
- 如果相同位置有两个节点的名字相同或几乎相同,系统会在新节点的URL 后添加数字(如:"company","company2","company3"等等)。如果对象的名称改变了,系统会自动修改对应节点的虚拟URL。此外,一条内部重定向记录会被创建。
- 这条记录可以确保旧的URL 仍然有效。旧的虚拟URL 会一直有效,直到某个节点用到了相同的URL。
- 在这种情况下,重定向记录会被删除。
手动虚拟URL[ ]
在管理界面中(全局别名与节点URL 别名)可以手动添加,编辑与删除虚拟URL。更多内容参阅“EZ Publish的使用”中与管理URL 别名相关的内容。此外,也可以创建“基于通配符的URL 转发”。(在实现多语言URL 功能时,这个特性被从3.10.0 版本中删除。不过又在随后的版本中重新加回了系统)