logoWebRelease 2 ユーザーズマニュアル
Version 2.80K 版
menu
1章 はじめに
  • 1. はじめに
  • 2. WebRelease の利用環境
  • 3. 製品のライセンスについて
2章 ユーザ管理
  • 1. WebRelease のユーザ管理
  • 2. ユーザの一覧
  • 3. ユーザの登録
  • 4. ユーザの休止
  • 5. ユーザの削除
  • 6. ユーザの一括削除
  • 7. 自分のユーザプロファイルの変更
  • 8. ログイン通知メール
  • 9. TOTP ワンタイムパスワードの設定
  • 10. ログインユーザ一覧
  • 11. ログイン履歴
  • 12. ユーザ登録情報の一括処理
3章 サイトの作成
  • 1. サイトの作成
  • 2. サイト設定
  • 3. スタッフ設定
    • 1. スタッフの役割
    • 2. スタッフの登録
    • 3. スタッフの設定
    • 4. スタッフのテンプレート設定
    • 5. スタッフのフォルダへのアクセス制限
    • 6. スタッフの承認ステップ
    • 7. スタッフの解任
    • 8. スタッフの役割の一括設定
  • 4. サイトリソース
    • 1. リソースの登録
    • 2. リソースの編集
    • 3. リソースの編集 [テキストファイル]
    • 4. リソースの編集 [zip ファイル]
    • 5. リソースの編集 [画像ファイル]
    • 6. リソースの編集 [添付ファイル]
    • 7. リソース内の外部リンクチェック
    • 8. リソースの削除とダウンロード
    • 9. リソースの一括移動
    • 10. リソース名の一括設定
    • 11. リソースの一括削除
    • 12. リソースフォルダ
    • 13. リソースフォルダを Zip にする
  • 5. 辞書の管理
  • 6. 外部リンクのチェック
  • 7. サイトのエキスポート
  • 8. サイトのインポート
  • 9. サイトの閉鎖
  • 10. サイトの削除
  • 11. サイトの操作履歴
4章 FTPの設定
  • 1. FTP の設定
  • 2. プライマリチャネルの設定
  • 3. FTP 記録の参照
  • 4. FTP の実行状況
  • 5. FTP 予約(定時起動)の設定
5章 テンプレート
  • 1. テンプレート
  • 2. テンプレートの作成
  • 3. 文書型の定義
  • 4. 要素のタイプ
    • 1. 1行テキスト
    • 2. 複数行テキスト
    • 3. WYSIWYG エディタ
    • 4. ラジオボタン
    • 5. ポップアップボタン
    • 6. チェックボックス
    • 7. 年月日/時分/秒
    • 8. 目次
    • 9. リンク
    • 10. イメージ
    • 11. 添付ファイル
    • 12. XMLリーダ
    • 13. コンポーネント
    • 14. グループ項目
    • 15. セレクタ
    • 16. 各要素に共通の設定項目
  • 5. テンプレートリソース
  • 6. テンプレートの展開
    • 1. 要素参照
    • 2. 関数呼び出し
    • 3. 演算子
    • 4. リソース参照
    • 5. メソッド
    • 6. 拡張タグ wr-if wr-then wr-else
    • 7. 拡張タグ wr-switch wr-case wr-default
    • 8. 拡張タグ wr-conditional wr-cond
    • 9. 拡張タグ wr-for
    • 10. 拡張タグ wr-break
    • 11. 拡張タグ wr-variable
    • 12. 拡張タグ wr-append
    • 13. 拡張タグ wr-clear
    • 14. 拡張タグ wr-return
    • 15. 拡張タグ wr-error
    • 16. 拡張タグ wr-- と wr-comment
  • 7. WYSIWYG エディタ設定
  • 8. テンプレート・プロファイラ
  • 9. テンプレートのリビジョン
  • 10. テンプレートのダウンロード
  • 11. テンプレートのアップロード
  • 12. テンプレートの上書きアップロード
  • 13. テンプレートのフォルダ
  • 14. テンプレートの状態
  • 15. テンプレートの削除
  • 16. ページ作成後のテンプレート修正
  • 17. 入力フィールドの短縮表示
  • 18. 作成したページの一覧
  • 19. テンプレートとスタッフ
  • 20. テンプレートの操作履歴
  • 21. テンプレートを参照している目次の一覧
  • 22. テンプレートの検索
6章 コンポーネント
  • 1. コンポーネント
  • 2. コンポーネントの使用例
  • 3. コンポーネントとセレクタ
7章 ページの作成
  • 1. ページの作成
  • 2. ページのプレビュー
  • 3. 実機でのプレビュー
  • 4. ページの状態
  • 5. ページの編集
    • 1. ページタイトル/ファイル名
    • 2. フォルダ
    • 3. フォルダ中でのページの位置
    • 4. ページの状態
    • 5. 公開期間の設定
    • 6. 変更を禁止
    • 7. プレビューURL/編集画面URL
    • 8. 他のコンテンツへのリンク
    • 9. 圧縮処理
    • 10. エンコーディング
    • 11. リンク先候補
    • 12. その他の操作
  • 6. コンテンツの入力
    • 1. 複数行テキスト
    • 2. WYSIWYG エディタ
    • 3. イメージ
    • 4. 添付ファイル
    • 5. リンク
    • 6. XML リーダ
    • 7. 入力欄の追加と削除
    • 8. 入力欄の開閉
  • 7. ページリソース
    • 1. リソースの登録
    • 2. リソースの編集
    • 3. リソースの編集 [テキストファイル]
    • 4. リソースの編集 [zip ファイル]
    • 5. リソースの編集 [画像ファイル]
    • 6. リソースの編集 [添付ファイル]
    • 7. リソース内の外部リンクチェック
    • 8. リソースの削除とダウンロード
    • 9. リソースの一括移動
    • 10. リソースの一括削除
    • 11. リソースフォルダ
    • 12. リソースフォルダを Zip にする
  • 8. ページの編集完了
  • 9. ページの公開
  • 10. ページの公開終了
  • 11. ページのエキスポート
  • 12. ページの削除
  • 13. ページのリビジョン管理
  • 14. ページのリビジョン間の比較表示
  • 15. リンク元一覧
  • 16. ページ内の外部リンク一覧
  • 17. ページの公開状況
  • 18. Markdown の使い方
  • 19. コンテンツ中の語句のチェック
  • 20. ページの操作履歴
  • 21. フォルダ
    • 1. フォルダの作成
    • 2. フォルダの設定
    • 3. フォルダにテンプレートを関連付ける
    • 4. フォルダへの承認プロセスの設定
    • 5. フォルダへのアクセス制限
    • 6. フォルダ中のページの順序の指定
    • 7. カレントフォルダの移動
    • 8. フォルダのオープン/クローズ
    • 9. フォルダ以下にあるページの状態
    • 10. フォルダの削除
  • 22. バージョニングフォルダ
  • 23. ページの一括処理
    • 1. 編集完了
    • 2. 公開
    • 3. 公開終了
    • 4. 公開開始指定時刻の設定
    • 5. 公開終了指定時刻の設定
    • 6. 公開開始と終了指定時刻の設定
    • 7. ページのエキスポート
    • 8. 承認依頼
    • 9. 移動
    • 10. 削除
    • 11. 保護設定
    • 12. ページ一括登録
  • 24. ページインポート機能
    • 1. HTML ファイルのインポート
    • 2. スタイルシートのインポート
    • 3. 画像ファイルのインポート
    • 4. テキストファイルのインポート
    • 5. wrp ファイルのインポート
    • 6. 添付ファイルのインポート
    • 7. フォルダのインポート
    • 8. ZIP ファイルのインポート
    • 9. 既存のページへの上書きインポート
    • 10. カスタムテンプレートを使う
    • 11. インポートに伴うエラーに対処する
  • 25. 外部作成コンテンツのインポート
  • 26. スケジュール一覧
  • 27. ページの検索
8章 マルチデバイス配信
  • 1. 多チャネル化
  • 2. チャネル別コンテンツの生成
  • 3. チャネル選択機能
9章 承認プロセスの設定
  • 1. 承認ステップの定義
  • 2. 承認プロセスの定義
  • 3. 承認プロセスをフォルダに関連付ける
  • 4. 承認プロセスによる公開管理
    • 1. ページの公開承認依頼
    • 2. 承認と差戻
    • 3. 承認画面への入り方
    • 4. 承認プロセスとページの公開終了
    • 5. 承認依頼フォルダ
    • 6. 承認依頼の一括移動
    • 7. 一括承認依頼
    • 8. 一括承認
    • 9. ページの緊急公開と緊急公開終了
    • 10. 承認依頼の削除
    • 11. 進行中の承認依頼の管理
10章 その他の機能
  • 1. ダッシュボード
  • 2. 英語インタフェース
11章 システムの運用管理
  • 1. システムの状態確認
  • 2. WebRelease の停止と起動
  • 3. データのバックアップ
  • 4. メモリ設定
  • 5. メールサーバの設定
  • 6. Proxy サーバの設定
  • 7. パスワードセキュリティ設定
  • 8. TOTP 認証の有効化
  • 9. アカウントの自動閉鎖
  • 10. ログイン通知メールの設定
  • 11. システムからの通知メール
  • 12. Cookie に Secure 属性をつける
  • 13. その他のシステム設定
  • 14. 証明書のインポート
  • 15. ストレージの管理
  • 16. 操作履歴
  • 17. ログファイルのダウンロード
  • 18. ログインエラーへの対応
  • 19. WebRelease のバージョンアップ
  • 20. ライセンスのアップグレード
  • 21. 期間ライセンスコードの更新
  • 22. WebRelease の Uninstall
12章 索引
  • 1. 関数索引
    • 1. add
    • 2. allObjects
    • 3. allPages
    • 4. channel
    • 5. channelCookieName
    • 6. channelName
    • 7. codePointAt
    • 8. comma3
    • 9. concatenate
    • 10. contentType
    • 11. count
    • 12. currentTime
    • 13. divide
    • 14. encodeURI と encodeURIComponent
    • 15. encoding
    • 16. fileName
    • 17. fileSize
    • 18. find
    • 19. firstElement
    • 20. folder
    • 21. formatDate
    • 22. formatDateRFC2822
    • 23. formatDateW3CDTF
    • 24. fullURL
    • 25. gengou
    • 26. getXML
    • 27. group
    • 28. halfwidth
    • 29. hasElement
    • 30. hasMethod
    • 31. head
    • 32. indexOfPage
    • 33. isEven と isOdd
    • 34. isFirstElement と isNotFirstElement
    • 35. isFirstPage
    • 36. isLastElement と isNotLastElement
    • 37. isLastPage
    • 38. isNull と isNotNull
    • 39. isNumber
    • 40. isPreview と isNotPreview
    • 41. jstr
    • 42. kmg1000
    • 43. kmg1024
    • 44. lastElement
    • 45. lastModifiedDate
    • 46. length
    • 47. multiply
    • 48. nextElement
    • 49. nextPage
    • 50. number
    • 51. pageCreatedDate と revisionCreatedDate
    • 52. pageID
    • 53. pageRevision
    • 54. pageTitle
    • 55. pageWithPageID
    • 56. parseDate
    • 57. parseDateRFC2822 と parseDateRFC2822Relaxed
    • 58. parseDateW3CDTF
    • 59. parseHtml
    • 60. path
    • 61. prevElement
    • 62. prevPage
    • 63. previewClock
    • 64. previewLanguage
    • 65. quote
    • 66. remainder
    • 67. replaceAll と replaceFirst
    • 68. resourceURL
    • 69. resourceWithName
    • 70. rtlCount
    • 71. rtlRatio
    • 72. scheduledEndDate
    • 73. scheduledStartDate
    • 74. searchText
    • 75. setScale
    • 76. siteTimeZone
    • 77. sort
    • 78. split
    • 79. startsWith と endsWith
    • 80. string
    • 81. stripTags
    • 82. substring
    • 83. subtract
    • 84. suffix
    • 85. tail
    • 86. templateName
    • 87. thisPage
    • 88. toEntityRef
    • 89. toLowerCase と toUpperCase
    • 90. trim
    • 91. unescapeEntities
    • 92. unsplit
    • 93. width と height
  • 2. オブジェクト索引
    • 1. Channel オブジェクト
    • 2. CheckBox オブジェクト
    • 3. Folder オブジェクト
    • 4. HTMLComment オブジェクト
    • 5. HTMLDataNode オブジェクト
    • 6. HTMLDocument オブジェクト
    • 7. HTMLElement オブジェクト
    • 8. HTMLElements オブジェクト
    • 9. HTMLTextNode オブジェクト
    • 10. Page オブジェクト
    • 11. Selector オブジェクト
    • 12. XMLFeed オブジェクト
13章 Appendix
  • 1. Exif Orientation の扱いについて
  • 2. WebP 形式の画像の扱いについて
  • 3. CMYK / YCCK 形式の jpeg 画像について
  • 4. プレビュー時の URL 書き換え機能
  • 5. サポートされているタイムゾーン
  • 6. アカウント閉鎖ページへのアクセス制限
  • 7. 正規表現
  • 8. 要素名・リソース名・変数名・メソッド名

8章 マルチデバイス配信

3. チャネル選択機能

複数のチャネルを作成し、それぞれのチャネルに対して最適なコンテンツを配信するところまできたら、マルチでバイス対応はあと一歩で完成します。あとは、サイトにアクセスしてきたユーザのデバイスを判別し、それに従って、ユーザを最適なチャネルに誘導すれば完成です。

チャネル選択機能は、ユーザが使用しているデバイス上のブラウザが提示する User-Agent から、そのデバイスが参照すべき「チャネル」を決定します。そして、そのデバイスからのアクセスをそのチャネルのコンテンツを配信している URL に誘導します。

WebRelease は静的コンテンツを公開サーバにアップロードしてコンテンツを公開するタイプの CMS であるため、ユーザのブラウザからのアクセスを適切なチャネルに振り分ける動作は、WebRelease 側で行われるのではなく、公開サーバ側で行われなければなりません。

WebRelease のチャネル選択機能は、振り分け機能の実現に apache の mod_rewrite を使用します。WebRelease が mod_rewrite 用の設定を自動生成し、それを、公開サーバ上の mod_rewrite に解釈実行させることで振り分け処理を実現します。チャネル選択機能を動作させるためには、公開サーバは mod_rewrite が使える apache である必要があります。

なお、apache 以外の Web サーバでも、mod_rewrite と同じか、非常に近い動作をするモジュールを持っているものがあります。そのような Web サーバも公開サーバとして利用できる可能性があります。

WebRelease が提供しているチャネル選択機能を使うことは必ずしも必須ではありません。デバイスを検出して適切なチャネルの URL に誘導する処理を、WebRelease の提供する機能とは別の、独自の mod_rewrite ルールで実装したり、クライアントサイドの JavaScript で実装することも可能です。

公開サーバには apache 2.0 以降 + mod_rewrite を使用してください。

デバイス判定ルール

各種のデバイスに対して、そのデバイスに対してどのチャネルのコンテンツを提供するのが良いかを決めるルールをデバイス判定ルールと呼びます。デバイスからのアクセスは、ここで指定したデバイス判定ルールに従って適切なチャネルに誘導されます。

デバイス判定ルールは「FTP管理」画面の「ルール」タブ中にある「デバイス判定ルール」欄に指定します。

デフォルトで設定されているデバイス判定ルール

このデバイス判定ルールには、デフォルトでは以下の 4 つのルールが設定されています。実際の運用では、このルールをそのまま使うか、改良して使用してください。このルールは単純ですが、実用レベルで動作するでしょう。しかしながら、デバイスは急速にその種類を増して行くと想定されますので、判定ルールについては、随時メンテナンスを念頭において運用する必要があると言えます。

デフォルトで設定されているデバイス判定ルール
mobile iPhone iPod BlackBerry "Windows Phone" Android*Mobile
tablet iPad Android
keitai DoCoMo KDDI DDIPOCKET WILLCOM J-PHONE Vodafone SoftBank Up.Browser
modern "MSIE 9." "MSIE 10." "MSIE 11." Chrome Safari Firefox Opera

ルールは、下記の形式にしたがって記述します。

  • 1 行に 1 ルールずつ記述します。複数のルール(デフォルトのデバイス判定ルールの場合は4つ)で1セットのデバイス判定ルールを構成します。
  • ひとつのルールは、半角スペースで区切られた複数の単語から構成されます。
  • 各ルールの先頭の単語はチャネル名です。2 語め以降が User-Agent にマッチさせる照合パターンです。ひとつのルールは、複数の照合パターンを持つことができます。ルール中のいずれかの照合パターンが User-Agent とマッチすると、そのデバイスはルールの先頭に指定されているチャネルに誘導されます。
  • 照合パターン中にスペースを含めたい場合には、照合パターン全体を " (ダブルクオート) で囲んでください。
  • 照合パターン中に、任意の文字列とのマッチする部分を作りたい場合には、その部分を * で表現してください。
  • 照合パターンと User-Agent のマッチングを行う場合には、大文字と小文字は区別されません。デフォルトで指定されているルールは大文字小文字の混ざった定義になっていますが、全部小文字でも同じ動作になります。
  • ルールの順番は重要です。ブラウザの User-Agent が、ルール中のいずれかの照合パターンにマッチするかどうか、ルールが記述されている順に上から調べます。あるルール中の照合パターンとマッチしたら、そのブラウザはルールに指定されているチャネルに誘導されます。この場合、それ以降のルールはチェックされません。
  • いずれのルールにもマッチしない User-Agent を持つデバイスに対しては、プライマリチャネルに誘導されます。

定義されていないチャネルに関するルールが記述されていてもエラーにはなりません。そのようなルールは単にそのルールが書かれていないかのように無視されます。.htaccess 生成時にもそのルールは無視されます。

ここからは、以下のルール

mobile iPhone iPod BlackBerry "Windows Phone" Android*Mobile

を例にして説明してみます。

  • このルールは、先頭が mobile で始まっています。ですから、チャネル mobile に対するルールです。このルールにマッチする User-Agent を持つデバイス(ブラウザ)はチャネル mobile に誘導されます。
  • このルールは「iPhone」「iPod」「BlackBerry」「"Windows Phone"」「Android*Mobile」という 5 つの照合パターンをもっています。
  • ブラウザの User-Agent がこの 5 つの照合パターンのいずれかを含んでいる場合、そのブラウザには、チャネル mobile のコンテンツが提供されるべきであることを定めています。この「含んでいる」とは、User-Agent がそういう文字列を含んでいるということです。
  • このルールの場合、照合パターン "Windows Phone" はパターン中にスペースを含んでいるので照合パターンがダブルクオートで囲まれています。この "Windows Phone" というパターンは Windows Phone を搭載する端末から送られてくる、例えば下記のような User-Agent の ... 9.0; Windows Phone OS 7.5... の部分にマッチします。

    Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ....

    ダブルクオートに囲まれていないと、Windows と Phone が別々の独立した照合パターンとして扱われるため User-Agent 中に iPhone や WindowsXP などが含まれている場合にそれらとマッチしてしまいます。
  • このルールの中の Android*Mobile というパターンは、Andoroid という単語に続いて、何かの、0 文字以上の文字列が続き、その後ろに Mobile という単語が出現する User-Agent とマッチします。例えば、Android 端末に搭載されている一般的なブラウザは、下記のような User-Agent を送ってきますが、この User-Agent の前半にある Android 部分と、後半にある Mobile の部分にマッチするように動作します。

    Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; generic ....... Version/3.1.2 Mobile Safari/525.20.1

デフォルトで設定されているデバイス判定ルールは比較的単純です。場合によっては、一部デバイスに対して、専用のルールを追加する必要があるかもしれません。

Android*Mobile にマッチする User-Agent を持っていながら、タブレットとみなす方が良いと考えられるデバイスも、ごく少数、あるようです。このことは Android 開発元の Google 社の User-Agent に関する技術指針に若干そぐわないのですが、そういった端末が存在することも事実の様です。さらには、スマートフォンとタブレットの境界にあり、どう判定すべきか迷うデバイスが増える可能性も否定はできません。そのようなデバイスに対して精密に対応する必要があれば、デバイス専用のルールを追加してルールの精度を上げて対応してください。

一方で、増え続けるデバイスに対応するには、ある程度の精度でルールを定めておき、あとは、ユーザがチャネルを選べるように U/I を整えておくのが良いのかもしれません。既に、Android デバイスは 3000 種以上あると言われています。今後も増えるでしょう。

mod_rewrite 用ディレクティブの生成機能

WebRelease には、先に説明したデバイス判定ルールから mod_rewrite 用のディレクティブのセットを生成する機能があります。

生成されるディレクティブセットは、下記のとおり動作するものとなっています。

  • プライマリチャネル以外のチャネルの URL へのリクエストに対しては、そのまリクエストされたチャネルのコンテンツを返します。この場合、User-Agent によるデバイスの判定、Query String、Cookie の参照は行いません。リクエストされたとおりにコンテンツを返します。この時、レスポンスには

    channel=<channelName>

    という Cookie がセットされます。

  • プライマリチャネルの URL に対してリクエストがあり、そのリクエストが channel=<chanelName> という Query String を持っている場合、そのリクエストは <channelName> に指定されたチャネルの対応する URL にリダイレクトされます。この時、レスポンスには

    channel=<channelName>

    という Cookie がセットされます。

    channel=<channelName> という Query String を付けてプライマリチャネルにアクセスすれば、目的のチャネルにリダイレクトしてもらえます。

    例えば、プライマリチャネルの URL が

    https://www.example.com/

    の場合に

    https://www.example.com/about_us.html?channel=mobile

    というアクセスがあった場合、このリクエストはチャネル mobile の該当する URL、例えば、チャネル mobile がサブディレクトリ型チャネルでその URL が

    https://www.example.com/m/

    となっているとすると、

    https://www.example.com/m/about_us.html

    にリダイレクトされます。

  • プライマリチャネルの URL に対してリクエストがあり、そのリクエストが channel=. という Query String を持っていた場合 User-Agent によるデバイス判定が行われます。リクエストは、判定の結果得られたチャネルの対応する URL にリダイレクトされます。この時、レスポンスには

    channel=<channelName> 

    という Cookie がセットされます。

    channel=. という Query String を付けてプライマリチャネルにアクセスすれば、デバイス判定を行った結果のチャネルにリダイレクトしてもらえます。

    例えば、プライマリチャネルの URL が

    https://www.example.com/

    で、サブディレクトリ型のチャネル tablet が定義されていてその URL が

    https://www.example.com/t/

    であるとします。この時、

    https://www.example.com/about_us.html?channel=.

    というアクセスがあると、リクエストに対して User-Agent によるチャネルの判定が実行されます。判定の結果、このデバイスをチャネル tablet に誘導する必要があると判断された場合、このリクエストは

    https://www.example.com/t/about_us.html

    にリダイレクトされます。

  • プライマリチャネルの URL に対してリクエストがあり、そのリクエストが channel=<chanelName> という Cookie を持っている場合、そのリクエストを <channelName> に指定されたチャネルの対応する URL にリダイレクトします。この時、レスポンスには

    channel=<channelName>

    という Cookie が(再度)セットされます。

    クライアントサイドで、JavaScript を使ってデバイス判定を行った場合には、判定の結果をこの cookie に入れてからプライマリチャネルのURLを参照することで、判定結果に対応したチャネルの URL に誘導してもらえることになります。なお、対応するプライマリチャネル上のページの URL は Page オブジェクトの canonicalURL() メソッドで得ることができます。

    また、ユーザが特定のデバイス向けのコンテンツをページの U/I で選択した場合、例えば「PC 版を見る」をクリックして PC 版のコンテンツを閲覧することを選んだ場合なども、選択結果をこの cookie に入れてページの canonicalURL() にアクセスすることで、ユーザの選択したデバイス向けのチャネルに誘導してもらうことができます。

  • 上記のいずれにも該当しないリクエストに対しては、User-Agent によるデバイス判定が行われます。リクエストは、判定の結果得られたチャネルの対応する URL にリダイレクトされます。この時、レスポンスには

    channel=<channelName>

    という Cookie がセットされます。

    判定の結果、User-Agent がいずれのルールの照合パターンともマッチしなかった場合は、リクエストに対してはプライマリチャネルのコンテンツが返されます。この場合には <channelName> の部分はプライマリチャネルの名前(デフォルトでは main) になります。プライマリチャネルの名称を変更している場合には、その変更後の名前が Cookie の値として使われます。

関連項目
  • Page オブジェクト

上記説明では、Cookie の名前と Query String のパラメタ名は channel となっていますが、この名前は変更可能です。この名前は「ルール」タブの「Cookie 名」という欄で指定できます。必要があれば変更してください。

ただし .htaccess というファイル名を変更した場合 AccessFileName や FilesMatch などに関連する設定の変更も必要になるでしょう。詳しくは apache のマニュアルを参照してください。

Cookie が設定される場合、いずれの場合も、セットされる Cookie の寿命は約 10年に指定されています。また、パスにはプライマリチャネルのドキュメントルートが指定されています。上記の説明のとおり、もし cookie を持ったデバイスがプライマリチャネルの URL にアクセスしてきた場合には、その cookie の値に応じたチャネルに誘導されます。この仕組みの応用として、クライアントサイドの JavaScript でデバイスを判定し、その判定結果を cookie に入れてからプライマリチャネル (Page オブジェクトの canonicalURL() メソッドで取得できます)にアクセスすることで、判定結果に対応したチャネルに誘導してもらえる、というのがあります。(なお、判定結果は cookie ではなく、query string にしてサーバ側に伝えるという方法も使えます)

デフォルトで指定されているデバイス判定ルールに対して生成される mod_rewrite ディレクティブセットは下記のとおりです。なお、このディレクティブセットは、mobile、tablet、keitai、modern という 4 つのサブディレクトリ型チャネルがあり、それらのサブディレクトリ指定がそれぞれ m、t、k、5 である場合のものです。

RewriteEngine On

RewriteRule	^k/.*$			- [L,CO=channel:keitai:%{HTTP_HOST}:5256000:/]
RewriteRule	^m/.*$			- [L,CO=channel:mobile:%{HTTP_HOST}:5256000:/]
RewriteRule	^5/.*$			- [L,CO=channel:modern:%{HTTP_HOST}:5256000:/]
RewriteRule	^t/.*$			- [L,CO=channel:tablet:%{HTTP_HOST}:5256000:/]

RewriteCond	%{QUERY_STRING}	"(^|&)channel=main(&|$)"
RewriteRule	^(.*)$			- [L,CO=channel:main:%{HTTP_HOST}:5256000:/]

RewriteCond	%{QUERY_STRING}	"(^|&)channel=keitai(&|$)"
RewriteRule	^(.*)$			/k/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"(^|&)channel=mobile(&|$)"
RewriteRule	^(.*)$			/m/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"(^|&)channel=modern(&|$)"
RewriteRule	^(.*)$			/5/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"(^|&)channel=tablet(&|$)"
RewriteRule	^(.*)$			/t/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"!(^|&)channel=.(&|$)"
RewriteCond	%{HTTP_COOKIE}	"(^| |;)channel=main($| |;)"
RewriteRule	^(.*)$			- [L,CO=channel:main:%{HTTP_HOST}:5256000:/]

RewriteCond	%{QUERY_STRING}	"!(^|&)channel=.(&|$)"
RewriteCond	%{HTTP_COOKIE}	"(^| |;)channel=keitai($| |;)"
RewriteRule	^(.*)$			/k/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"!(^|&)channel=.(&|$)"
RewriteCond	%{HTTP_COOKIE}	"(^| |;)channel=mobile($| |;)"
RewriteRule	^(.*)$			/m/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"!(^|&)channel=.(&|$)"
RewriteCond	%{HTTP_COOKIE}	"(^| |;)channel=modern($| |;)"
RewriteRule	^(.*)$			/5/$1 [L,R]

RewriteCond	%{QUERY_STRING}	"!(^|&)channel=.(&|$)"
RewriteCond	%{HTTP_COOKIE}	"(^| |;)channel=tablet($| |;)"
RewriteRule	^(.*)$			/t/$1 [L,R]

RewriteCond	%{HTTP_USER_AGENT}%	"\Qiphone\E|\Qipod\E|\Qblackberry\E|\Qwindows phone\E|\Qandroid\E.*\Qmobile\E" [NC]
RewriteRule	^(.*)$			/m/$1 [L,R]

RewriteCond	%{HTTP_USER_AGENT}%	"\Qipad\E|\Qandroid\E" [NC]
RewriteRule	^(.*)$			/t/$1 [L,R]

RewriteCond	%{HTTP_USER_AGENT}%	"\Qdocomo\E|\Qkddi\E|\Qddipocket\E|\Qwillcom\E|\Qj-phone\E|\Qvodafone\E|\Qsoftbank\E|\Qup.browser\E" [NC]
RewriteRule	^(.*)$			/k/$1 [L,R]

RewriteCond	%{HTTP_USER_AGENT}%	"\Qmsie 9.\E|\Qmsie 10.\E|\Qmsie 11.\E|\Qchrome\E|\Qsafari\E|\Qfirefox\E|\Qopera\E" [NC]
RewriteRule	^(.*)$			/5/$1 [L,R]

RewriteRule	^(.*)$			- [L,R,CO=channel:main:%{HTTP_HOST}:5256000:/]

定義されていないチャネルに関するルールは無視されるため、チャネルが定義されていない状態でディレクティブセットを生成しても上記の結果は得られません。

mod_rewrite 用ディレクティブの自動アップロード

WebRelease  には、指定されたデバイス判定ルールにもとづいて、mod_rewrite 用のディレクティブを自動生成し、それを公開サーバにアップロードする機能があります。

「FTP 管理」画面の「ルール」タブにある「htaccess 自動生成」のチェックボックスを ON にすると、自動生成された mod_rewrite 用のディレクティブが公開サーバに、必要に応じて自動でアップロードされるようになります。htaccess ファイルのアップロード先は、プライマリチャネルのコンテンツがアップロードされるディレクトリの直下となります。そのファイル名は、デフォルトでは .htaccess ですが、他のファイル名にする必要があれば「htaccess ファイル名」欄で指定してください。

 「htaccess 自動生成」のチェックを ON にします

.htaccess がアップロードされるタイミングは FTP 実行時となります。また、前回アップロードした .htaccess と差分がない場合にはアップロードは行われません。

.htaccess ファイルが更新されると、apache は .htaccess を再読み込みしますので .htaccess を更新するたびに apache を再起動する必要はありません。

.htaccess 用 apache の設定

アップロードされた .htaccess が正しく apache に理解され、解釈実行されるためには、apache 側の設定も必要です。下記の設定を httpd.conf に追記してください。または、同等の設定をおこなってください。

.htaccess を apache に認識させる方法について、さらに不明な点は、apache のマニュアルを参照してください。

httpd.conf に追加する設定
<Directory  DOCROOT>
  Options SymLinksIfOwnerMatch
  AllowOverride FileInfo
</Directory>

DOCROOT の部分には、プライマリチャネルのルートディレクトリを指定します。例えば

/var/www/html/

などです。 ここで指定するディレクトリは .htaccess がアップロードされるディレクトリと一致している必要があります。

多くの場合、.htaccess を使うことは、セキュリティ上の大きな問題を起こすことはありませんが SymLinksIfOwnerMatch と AllowOverride FileInfo の指定の意味については apache のマニュアルをよく読んで理解した上で使用してください。

.htaccess のアップロードを手作業で行う

これまで説明してきたたとおり、WebRelease にはデバイス判定ルールから mod_rewrite 用のディレクティブを生成し、それを .htaccess として公開サーバに自動アップロードする機能があります。

一方で .htaccess の中に、WebRelease に関するものだけでなく、認証やアクセス制限など、他の設定も入れたい場合があります。そのような場合にはWebRelease が自動生成した .htaccess をそのまま使うことはできませんので、自動生成した .htaccess をベースに、必要な設定を追加した .htaccess を作成し、それを手作業で公開サーバのルートディレクトリに置いてください。

WebRelease が生成した .htaccess は「FTP管理」画面の「ルール」タブにあるダウンロードボタンをクリックすることで手元の PC にダウンロードすることができます。

 .htaccess は「FTP管理」画面の「ルール」タブにあるダウンロードボタンをクリックすることで手元の PC にダウンロードすることができます

もし .htaccess を使用した設定を行いたくない場合には、mod_rewrite の設定を直接 httpd.conf 中に書くこともできます。その場合は、ダウンロードした mod_rewrite ディレクティブをベースに、httpd.conf 中に記述すべき mod_rewrite 用ディレクティブを作成し httpd.conf に記述してください。mod_rewrite のディレクティブの書き方は、同じ動作をするものでも .httod.conf 中に書く場合と .htaccess 中に書く場合では少し違ったものとなりますのでご注意ください。

© 2000 - 2025  FrameWorks Software, Inc.