我想重定向使用错误url别名的url。
例如,在我的网站上,我有:英语->/价格/高中->节点/112西班牙语->(/es)/precios/高中->节点/115
当一个人或搜索引擎到达/es/prices/高中时,返回404。我想要的是将/es/prices/highschool重定向到node/115。
我想以一种通用的形式来做这件事,写一个模块或使用现有的模块(如果可能的话)。
谢谢。
我已经想好了。
在预处理钩子中,我需要检查页面,去掉前缀,并从原始id中获取节点id。
参见以下代码:
if(current_path()=="search404")
{
$url = request_path();
if (startsWith($url,'es/') ||
startsWith($url,'de/') ||
startsWith($url,'it/') ||
startsWith($url,'fr/') )
{
$originalPath = substr($url,3,strlen($url)-3);
$path = drupal_lookup_path("source", $originalPath,"en");
if (isset($path))
{
$node = menu_get_object("node", 1, $path);
if (isset($node))
{
$prefix = substr($url,0,2);
$translated_paths = translation_path_get_translations('node/' . $node->nid);
if (isset($translated_paths) && array_key_exists ($prefix,$translated_paths))
{
if (isset($_GET['destination'])) {
unset($_GET['destination']);
}
$new_path = $translated_paths[$prefix];
drupal_goto($new_path, array(),301);
}
}
}
}
}
为语言版本添加不同的url别名不是一个解决方案吗?我的意思是:
节点/112->/价格/高中节点/115->/es/precios/escuela secundaria
i18n模块还处理基于语言的路径和重定向。