我正在尝试使用 url_rewrite 来解决paging
模块 URL 中的非友好参数。我希望将 URLpage-title.html?page=0,1
转换为page-title/page1.html
.
这是我的钩子:
function mymod_url_outbound_alter(&$path, &$options, $original_path) {
$localPath = $path . '?' . $options['query'];
dpm("_url_outbound_alter($localPath)");
if (preg_match('|(.+)\.html\?page=0%2C(\d+)|', $localPath, $matches)) {
$path = "${matches[1]}/page${matches[2]}.html";
unset($options['query']);
dpm("altering path to $path");
}
}
function mymod_url_inbound_alter(&$result, $path, $path_language) {
if (preg_match('|(.+)/page(\d+)\.html|', $path, $matches)) {
//$result = "${matches[1]}.html?page=0,${matches[2]}";
$result = "${matches[1]}.html";
//$_GET['q'] = "page=0,${matches[2]}";
$_GET['page'] = "0,${matches[2]}";
dpm("altering in-path to $result");
}
}
function mymod_boot() {}
是不是不能在 hook_url_inbound_alter 中添加查询部分?
- 如果我注释掉 mymod_url_outbound_alter,它可以工作,机器人逗号我们 URL 编码 - 好的,它确实显示了友好的 URL。
- 如果我同时启用两者,页面将进入无限重定向 301 循环。
- 注释掉的变体似乎也不起作用。
是的,我知道最好修复paging
使用非查询 URL。但是该模块有点过于复杂,无法可靠地做到这一点。pagination
模块对我来说缺少功能。
是 URL 更改的问题吗?我该怎么做才能让它发挥作用?