2
1
0
1 回答
- 210
Atlassianへの要望について
強制的にpageIdのURLにする手順が欲しいとリクエストがありました。
ユーザから旧Versionでのパッチが提供されましたが、Won't Fix で終了しています。
https://answers.atlassian.com/questions/130665/always-show-confluence-url-in-page-id-format
https://jira.atlassian.com/browse/CONF-27966
JavaScriptで強制的にpageId形式のURLへリダイレクトさせる方法
カスタムHTMLの、「BODY の最後」に、以下JavaScriptを入れてください。
1度ページが表示してしまいますが、その後pageId形式のURLへリダイレクトさせます。<script type="text/javascript"> AJS.toInit(function() { /* 1. pageid 数値変換 (pageidがなければ処理しない) */ var pageId = parseInt(AJS.Data.get('page-id'), 10); if (!pageId) { return; } /* 2. 基準URL作成 */ var spaceKey = AJS.Data.get('space-key'); var pageTitle = AJS.Data.get('page-title'); // タイトルベースのURL : <Confluence Base URL>/display/<Space Key>/<Page Title> // TODO: 理想はページタイトルまで見るべきだが条件が複雑なためスペースまでを見る // ref. https://confluence.atlassian.com/display/CONFKB/Confluence+Page+URL's+Contain+pageId+Instead+of+The+Page+Title var titleUrl = AJS.Data.get('context-path') + '/display/' + spaceKey + '/'; // pageIDのURL : <Confluence Base URL>/pages/viewpage.action?pageid=<pageid> var pageIdUrl = AJS.Data.get('context-path') + '/pages/viewpage.action?pageId=' + pageId; // アクセス中のURL var locationUrl = location.pathname + location.search + location.hash; /* 3. アクセス中のURLがタイトルベースのURLかチェックする */ var isTitleUrl = null; if (locationUrl.length < titleUrl.length) { isTitleUrl = false; } else if (titleUrl === locationUrl.substr(0, titleUrl.length)) { isTitleUrl = true; } else { isTitleUrl = false; } /* 4. タイトルベースのURLの場合 pageidベースにリダイレクトさせる */ if (isTitleUrl === true) { location.href = pageIdUrl + location.hash; } }); </script>
簡単にしか検証していません。
リダイレクトするため、2回リクエストします。多少の負荷は増えます。
- 是永 誠
回答ありがとうございます。
基本機能としては備わっていないのですね。。。
上記のjavascriptだとページが表示されてからリダイレクトされるとのことなので、導入は見送ろうかと思います。
コメントを追加...
ページのURL形式をすべてpageId形式にすることはできるでしょうか?
ページタイトルにマルチバイト文字が含まれていると
https://XXXX/pages/viewpage.action?pageId=XXX
というpageId形式のURLになりますが、
シングルバイト文字だけで構成されたページの場合
https://XXXX/display/[spacename]/[pagetitle]
という形式のURLになってしまいます。
タイトルを変更するとURLも変わってしまう為、リンクURLを共有してからタイトルの変更があったりするとアクセスできないなどの事象が起きています。
「ページへのリンク...」のタイニーリンクを使えば、タイトル変更した際のURL変更にも対応してくれているようですが、できればpageId形式にすべて統一したいと考えています。