url_rewrite を使用して、paging
モジュールの URL の非友好的なパラメーターを回避しようとしています。みたいな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 エンコードされています - OK、わかりやすい URL が表示されました。
- 両方を有効にすると、ページは無限のリダイレクト 301 ループに入ります。
- コメントアウトされたバリアントも機能しないようです。
paging
はい、非クエリ URL を使用するように修正した方がよいことはわかっています。しかし、モジュールはそれを確実に行うには少し複雑すぎます。pagination
モジュールには機能がありません。
URL の変更に問題がありますか? 機能させるにはどうすればよいですか?