path 模块允许你指定 Drupal URL 的别名。这些别名为站点用户增强了 URL 的可读性并可能帮助互联网搜索引擎更有效地索引你的内容。 每个页面都可以建立多个别名。
一些 URL 别名的示范:
path 模块在所有的节点输入和编辑界面加入额外的输入别名的区域 (当然要求该用户具有相应的权限),它也提供一个查看和编辑所有 URL 别名的界面。
这个模块同时带来了用户批量定义 URL 别名的可能性,这对于希望统一的 URL 别名而不是默认的地址很有用处。 例如,你可能希望在不同的语言中有自己的 URL 表现形式,在 web 服务器上访问 Drupal 源代码需要设置这些类型的别名。
你可以
Drupal 同时带给用户进行批量指定 URL 别名的可能性。 你可能愿意看到 Drupal 使用完全不一样的 URL,或者是将 URL 翻译为访问者的本地语言,不论是哪种情形,这个特性都是相当棒的。 只有可以访问站点源代码的管理员才能设置这种类型的别名,你可以在代码的某处定义一个函数 (甚至在 settings.php),请看下面的示范:
<?php
// 用于 Drupal 4.6.x 的示范
function conf_url_rewrite($path, $mode = 'incoming') {
if ($mode == 'incoming') { // 来自客户端的 URL
return preg_replace('!^display/(\d+)$!', 'node/\1', $path);
}
elseif ($mode == 'outgoing') { // 输出到客户端的 URL
return preg_replace('!^node/(\d+)$!', 'display/\1', $path);
}
}
?><?php
// 适用于 Drupal 4.7.x 以上的示范
function custom_url_rewrite($type, $path, $original) {
// 如果这个路径已经有别名了,跳过它
if ($path != $original) {
return $path;
}
if ($type == 'source') { // 来自客户端的 URL
return preg_replace('!^display/(\d+)$!', 'node/\1', $path);
}
elseif ($type == 'alias') { // 输出到客户端的 URL
return preg_replace('!^node/(\d+)$!', 'display/\1', $path);
}
}
?>这个函数将每个 node/$node_id 类型的 URL 转为 display/$node_id。 你自己定制的 URL 别名将不受影响,因此,如果你有一个 'contact' 页面别名,那么 display/3 别名将不会生效。
利用这个特性,你不仅仅可以用来缩短你的 URL,或者将他们翻译为你自己的语言,你还可以添加全新的次级 URL 到已经存在的模块的 URL 空间,或者将存在的组合到公共的 URL 空间。举个例子,你可以为“新闻”词汇下的页面别名建立一个 news 部分,这样就可以拥有 news/15 和 news/sections/3 这样的 URL 而不是 node/15 和 taxonomy/term/3。 当然要做如此高级的别名,你需要广泛地了解 Drupal 的内部工作机理和正则表达式。