Newer Version Available
Salesforce サイトの URL の書き換え
サイトは、サイト訪問者にわかりやすい URL とリンクを表示する組み込みロジックを備えています。アドレスバーに入力したり、ブックマークから起動したり、または外部 Web サイトからリンクする URL 要求を再記述するルールを作成します。サイトページ内のリンクの URL を再記述するルールも作成できます。URL を再記述すると、URL がわかりやすくなるだけでなく、ユーザが直感的に理解できるようになるため、検索エンジンによるサイトページのインデックス作成がさらに容易になります。
たとえば、自分のブログサイトを持っているとします。URL を書き換えない場合、ブログのエントリの URL は次のようになります。http://myblog.force.com/posts?id=003D000000Q0PcN
URL を書き換えると、ユーザはレコード ID ではなく日付やタイトルでブログの投稿にアクセスできます。大晦日の投稿の URL は次のようになります。http://myblog.force.com/posts/2019/12/31/auld-lang-syne
また、サイトページ内に表示されるリンクの URL を書き換えることもできます。大晦日の投稿にバレンタインデーの投稿へのリンクが含まれる場合、リンク URL は次のように表示されます。http://myblog.force.com/posts/2019/02/14/last-minute-roses
サイトの URL を書き換えるには、元の URL をわかりやすい URL に対��付ける Apex クラスを作成して、Apex クラスをサイトに追加します。
Site.UrlRewriter インターフェースのメソッドについての詳細は、「UrlRewriter」を参照してください。
Apex クラスの作成
- クラスおよびメソッドはグローバルである必要がある
- Apex クラスおよびメソッドはすべて global である必要があります。
- クラスに両方のメソッドを実装する必要がある
- Apex クラスには mapRequestUrl メソッドおよび generateUrlFor メソッドの両方を実装する必要があります。いずれのメソッドも使用しない場合は、そのメソッドが null を返すようにします。
- Visualforce サイトページでのみ機能する書き換え
- 受信 URL 要求は、サイトに関連付けられている Visualforce ページのみに対応付けできます。標準ページ、画像、その他のエンティティに対応付けることはできません。
- サイトページのリンクの URL を書き換えるには、$Page マージ変数を含む !URLFOR 関数を使用します。たとえば、次のコードでは、myPage という名前の Visualforce ページにリンクします。
- 『Visualforce 開発者ガイド』��付録「関数」を参照してください。
- 符号化された URL
- Site.urlRewriter インターフェースを使用して取得する URL は符号化されています。符号化されていない URL の値にアクセスする必要がある場合は、EncodingUtil クラスの urlDecode メソッドを使用します。
- 文字の制限
- わかりやすい URL は、Salesforce の URL とは異なる必要があります。3 文字のエンティティのプレフィックスまたは 15 文字または 18 文字の ID を含む URL は書き換えられません。
- わかりやすい URL と書き換えられた後の URL のどちらでもピリオドは使用できません。ただし、URL の末尾には使用できない .well-known パスコンポーネントは例外です。
- 文字列の制限
- わかりやすい URL と書き換えられた後の URL パスのどちらでも、サイトのベース URL の後の最初のパスコンポーネントとして次の予約文字列を使用することはできません。サイトのベース URL の後の最初のパスコンポーネントとは、たとえば、https://sites.force.com/baseURL、https://sites.force.com/pathPrefix/baseURL、https://custom-domain/pathPrefix/baseURL、https://sites.force.com/pathPrefix/baseURL/another/path などの baseURL を指します。
- apexcomponent
- apexpages
- aura
- chatter
- chatteranswers
- chatterservice
- cometd
- ex
- faces
- flash
- flex
- home
- id
- ideas
- idp
- images
- img
- javascript
- js
- knowledge
- lightning
- login
- m
- mobile
- ncsphoto
- nui
- push
- resource
- saml
- sccommunities
- search
- secur
- services
- servlet
- setup
- sfc
- sfdc
- sfdc_ns
- sfsites
- site
- style
- vote
- widg
- 書き換えられた後の URL パスの最後に次の予約文字列を使用することはできません。
- /aura
- /auraFW
- /auraResource
- /AuraJLoggingRPCService
- /AuraJLVRPCService
- /AuraJRPCService
- /dbcthumbnail
- /HelpAndTrainingDoor
- /htmldbcthumbnail
- /l
- /m
- /mobile
- 相対パスのみ
- PageReference.getUrl() メソッドでは、ホスト名またはサイトのプレフィックス (ある場合) の直後に指定する URL の一部のみが返されます。たとえば、URL が http://mycompany.force.com/sales/MyPage?id=12345 であり、「sales」がサイトのプレフィックスである場合、/MyPage?id=12345 のみが返されます。
- ドメインとサイトのプレフィックスは書き換えできません。
- 一意のパスのみ
- サイトのプレフィックスと同じ名前を持つディレクトリには、URL を対応付けできません。たとえば、サイト URL が http://acme.force.com/help で、サイトプレフィックスが「help」である場合、help/page への URL をポイントすることはできません。結果として、返されるパスは http://acme.force.com/help/page ではなく、http://acme.force.com/help/help/page になります。
- 一括クエリ
- ページ作成でのパフォーマンスを向上させるには、generateUrlFor メソッドでタスクを一度に 1 つずつではなく、一括で実行します。
- 項目の一意性の適用
- URL を書き換えるために選択した項目が一意であることを確認します。クエリに SOQL の一意の項目またはインデックス付き項目を使用すると、パフォーマンスが向上する可能性があります。
サイトへの URL 書き換えの追加
- [設定] から、[クイック検索] ボックスに「サイト」と入力し、[サイト] を選択します。
- [新規] をクリックします。既存のサイトを変更する場合は [編集] をクリックします。
- [サイトの編集] ページで、[URL 書き換えクラス] の [Apex クラス] を選択します。
- [保存] をクリックします。
コード例
この例では、mycontact と myaccount という 2 つの Visualforce ページで構成される単純なサイトが存在します。このサンプルを試してみる前に、両方のページで「参照」権限が有効になっていることを確認します。各ページでそのオブジェクト種別の標準コントローラが使用されます。取引先責任者ページには親取引先ページへのリンクと取引先責任者の詳細が含まれます。
書き換えを実装する前は、「有効化前」の図に示されるように、アドレスバーとリンク URL はレコード ID (ランダムな 15 桁の文字列) を表示しました。書き換えを有効にした後は、「有効化後」の図に示されるように、アドレスバーとリンクがわかりやすく書き換えられた URL を表示します。
これらのページの URL の書き換えに使用する Apex クラスについては、詳しい説明と共に「URL を書き換える Apex クラスの例」に示しています。
サイトページの例
このセクションでは、この例で使用する取引先ページおよび取引先責任者ページの Visualforce を示します。
URL を書き換える Apex クラスの例
書き換え前と書き換え後
- 取引先責任者ページの書き換え前の元の URL
- 取引先責任者ページから親取引先ページへのリンク
- 取引先ページへのリンクの書き換え前の元の URL (ブラウザのステータスバーに表示される)
- 取引先責任者ページの書き換えられた URL
- 取引先責任者ページから親取引先ページへのリンク
- 取引先ページへのリンクの書き換え後の URL (ブラウザのステータスバーに表示される)