Я пытаюсь использовать url_rewrite для обхода недружественных параметров в URL-адресе модуля paging
.Я хочу превратить URL-адреса, такие как page-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?Что я могу сделать, чтобы это работало?