このような例をあちこち探しましたが、見つかりませんでした。profile?arg1=113 のようなクエリ引数を含むパスのエイリアスを作成しようとしています。
パスのプレーンな文字列表現を提供path_save()
するか、url()
.
url('profile', array('query' => array('arg1' => $uid)))
いずれにせよ、?および=は、URL エイリアス管理ページにエスケープ文字として表示されます。これは当然、パスが見つからないことを意味します。
どうすれば維持できますか?および = エスケープされることから?
2012 年 12 月 19 日編集 1:より大きなコンテキストは、 Profile2プロファイルが保存されているときに (つまり、mymodule_profile2_presave() で)エイリアスを設定しようとしているということです。プログラムでエイリアスを設定します。
2012 年 12 月 19 日 編集 2:問題は挿入側にあるのではないことに気付きました - url_alias テーブルには、実際にはエスケープされていない文字が含まれています。問題は、Drupal がパスを使用する前に URL デコードしないことです...
12/20/12 編集 3:パス エイリアスの代わりにリダイレクトを使用するソリューションが見つかりました。Redirect はクエリ文字列を適切にデコードします!