オープンソースCMSのMODxでは、一つのドキュメントに対して非常に多くのURIでアクセスすることが可能ですが、SEO Strict URLsプラグインを導入することによって、これらのURIを一意化することができます。SEO Strict URLsプラグインには大きく分けて二つの機能があります。一つは、MODxが出力するドキュメント中にあるURIを設定に従って書き換える機能です。もう一つは、標準の状態でアクセスできる複数のURIにアクセスがあった場合に、設定に従って一意のURIに301リダイレクトする機能です。
SEO Strict URLsプラグイン導入のメリットは大きいですが、MODx本体のフレンドリーURLやその設定、.htaccessによるmod_rewrite等と組み合わせると複雑になりがちです。ここでは、SEO Strict URLsプラグインの設定とその挙動の一部をまとめています。
後述の表を見てわかるように、設定によってはSEO Strict URLsプラグインが直感的ではない挙動(バグを含む)をする場合があります。個人的には、URI構成を通常のサイト風にする方法 で紹介している設定が不具合が出にくく、管理もしやすいのでおすすめです。
ここでは、いくつかの不具合を修正したSEO Strict URLsプラグイン(Phize版)を前提としている。本家版を使用する場合には、ここで記載している挙動とは異なる可能性がある。
SEO Strict URLsプラグインにはいくつかの設定項目があり、これらの設定によって、ドキュメント中のURIの書き換え機能やリダイレクト機能の挙動が変わります。
パラメータ名 | 説明 |
---|---|
editDocLinks | ドキュメント中のURIの書き換えに関する設定。「0」、空文字を指定すると、ドキュメント中のURIは書き換えない。それ以外を指定すると、ドキュメント中のURIも設定に従って書き換える。 |
makeFolders | 子ドキュメントを持つフォルダドキュメントに関する設定。「0」、空文字を指定すると、通常のドキュメントと同様に扱われる。それ以外を指定すると、ディレクトリのように扱われる。 |
emptyFolders | 子ドキュメントを持たないフォルダドキュメントに関する設定。「0」、空文字を指定すると、通常のドキュメントと同様に扱われる。それ以外を指定すると、ディレクトリのように扱われる。makeFoldersが「0」、空文字の場合には設定は無視される。 |
override | 個別のドキュメントに関する設定。「0」、空文字を指定すると、全てのドキュメントはeditDocLinks、makeFolders、memptyFoldersの設定に従って扱われる。それ以外を指定すると、ドキュメントにテンプレート変数overrideTVが設定されている場合は、その設定に従って扱われる。 |
overrideTV | 個別のドキュメントの設定に使用するテンプレート変数。overrideが「0」、空文字以外で、ドキュメントにこのテンプレート変数が設定されている場合のみ、ドキュメントのURIはこの設定に従って扱われる。 |
一般的と思われるフレンドリーURLの設定(次の表を参照)での運用を想定して、SEO Strict URLsプラグインによるURIの書き換え機能・リダイレクト機能の挙動の一部をまとめています。
設定名 | 値 |
---|---|
フレンドリーURLの使用 | Yes |
フレンドリーエイリアス | Yes |
エイリアスパスを使用 | Yes |
以下が、上記のフレンドリーURLの設定に基づいたSEO Strict URLsプラグインの挙動をまとめた表です。
editDocLinks=0の場合はドキュメント中のURIは書き換えられないが、リダイレクトは下記の表の通り行われる。
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
---|---|---|---|---|---|---|
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
alias | なし | なし | No/Yes | alias | 同じ | alias |
alias/ | ||||||
.html | No/Yes | alias | alias.html | |||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry- | なし | No/Yes | alias | entry-alias | ||
alias/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
.html | No/Yes | alias | entry-alias.html | |||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ |
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
---|---|---|---|---|---|---|
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
alias | なし | なし | No | alias | 同じ | alias |
alias/ | ||||||
Yes(子ドキュメントあり) | alias | alias/ | alias/ | |||
alias/ | 同じ | |||||
Yes(子ドキュメントなし) | alias | 同じ | alias | |||
alias/ | ||||||
.html | No | alias | 同じ | alias.html | ||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
Yes(子ドキュメントあり) | alias | 同じ | alias/ | |||
alias/ | ||||||
alias.html | alias/ | |||||
alias.html/ | ||||||
Yes(子ドキュメントなし) | alias | 同じ | alias.html | |||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry- | なし | No | alias | 同じ | entry-alias | |
alias/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
Yes(子ドキュメントあり) | alias | alias/ | alias/ | |||
alias/ | 同じ | |||||
entry-alias | ||||||
entry-alias/ | ||||||
Yes(子ドキュメントなし) | alias | 同じ | entry-alias | |||
alias/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
.html | No | alias | 同じ | entry-alias.html | ||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ | ||||||
Yes(子ドキュメントあり) | alias | 同じ | alias/ | |||
alias/ | ||||||
alias.html | alias/ | |||||
alias.html/ | ||||||
entry-alias | 同じ | |||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ | ||||||
Yes(子ドキュメントなし) | alias | 同じ | entry-alias.html | |||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ |
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
---|---|---|---|---|---|---|
エイリアス | 接頭辞 | 接尾辞 | フォルダ? | 書き換え前 | 書き換え後 | リダイレクト先 |
alias | なし | なし | No | alias | 同じ | alias |
alias/ | ||||||
Yes | alias | alias/ | alias/ | |||
alias/ | 同じ | |||||
.html | No | alias | 同じ | alias.html | ||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
Yes | alias | 同じ | alias/ | |||
alias/ | ||||||
alias.html | alias/ | |||||
alias.html/ | ||||||
entry- | なし | No | alias | 同じ | entry-alias | |
alias/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
Yes | alias | alias/ | alias/ | |||
alias/ | 同じ | |||||
entry-alias | ||||||
entry-alias/ | ||||||
.html | No | alias | 同じ | entry-alias.html | ||
alias/ | ||||||
alias.html | ||||||
alias.html/ | ||||||
entry-alias | ||||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ | ||||||
Yes | alias | 同じ | alias/ | |||
alias/ | ||||||
alias.html | alias/ | |||||
alias.html/ | ||||||
entry-alias | 同じ | |||||
entry-alias/ | ||||||
entry-alias.html | ||||||
entry-alias.html/ |