フレンドリーURLの動作について

質問全般・改善要望
返信する
cobbbko
メンバー
メンバー
記事: 6
登録日時: 2010年11月03日(水) 18:00

フレンドリーURLの動作について

投稿記事 by cobbbko »

こんにちは、お世話になっております。
いつも拙い質問にご回答いただけるおかげで、modxの利用も快調です。
ありがとうございます。

今回は1点、URLに関してどなたかにお聞きできれば幸いです。


具体的には、

「サイトスタートのドキュメントに番号1のリソースを指定した時に、それ以下の子ドキュメントたちのURLを、http://sample.com/1/aaa.html ではなく、 http://sample.com/aaa.html というURLでアクセスできないか?」ということです。

目的は、URLをできるだけ短くしたいことと、パンくずリスト(Breadcrumbs)を楽に作成したいこと、です。
なお、必ずしも上記のようにできる必要はないのですが、できるといいなぁ、という程度のレベルのものです。

環境は、

・フレンドリーURL利用
・SEO Strict URLsプラグイン利用
・modx-1.0.4J-r3利用
・MySQLバージョン:5.1.22-rc
・coreserver

です。


詳細ですが、現在、以下の構成でサイトを作成したいと考えております。

AAA(ドキュメント番号:1)
  ┗BBB(ドキュメント番号:2)
    ┗CCC(ドキュメント番号:3)

としたく、サイトスタートに「AAA」を設定しています。

当然、http://sample.com/ のURLで、AAAにアクセスできる状態です。
ですが、例えばCCCにアクセスしようと思うと、「http://sample.com/2/3.html」ではなく、「http:/ ... html」となります

http://sample.com/2/3.html」でCCCにアクセスできるようにすると、

AAA
BBB
  ┗CCC

というように、BBBを、AAAの子リソースではなく、ドキュメント番号「0」を指定しなければなりません。
こうすると、今度はBreadcrumbsなどのパンくずリストで、BBBの戻り先が「http://sample.com/0.html」となり、うまく繋がらなくなってしまいます


普通に考えて正常な動作かと思いますし、無理なようならテンプレートを編集することで対応できるので、必ずしもできる必要はないのですが、
もし可能ならそちらの方が楽だな、と思い質問させていただきました。


わかりやすくご説明できているか不安ですが、よろしくお願い致します。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: フレンドリーURLの動作について

投稿記事 by sama55 »

こんにちは

難しく(厳密に)考えすぎてませんでしょうか?
cobbbko さんが書きました:詳細ですが、現在、以下の構成でサイトを作成したいと考えております。
AAA(ドキュメント番号:1)
  ┗BBB(ドキュメント番号:2)
    ┗CCC(ドキュメント番号:3)
としたく、サイトスタートに「AAA」を設定しています。
上の図は、確かに、ツリーの第一レベルに位置するリソース群は、スタートページにぶら下がるべきと考えるのが自然です。しかし、MODxでは、システム内の任意のリソースをスタートページにできるという仕組み(機能)があるため、ツリー上では親子でなくても、表示上では親子である、という状態が存在します。言い換えますと、スタートページに指定したリソースは、「サイト名」で表示されるリソースツリーの先頭行(つまりホームページ)にプログラム的に位置づけられ、見た目上、リソースツリーの第一レベルに位置するすべてのリソースの親になります。この考えからすると、上の構成は見た目の話で、ツリー上でこうしてしまうと、結果的に、ホームページが二重に存在することになり、話がややこしくなってしまいます。
cobbbko さんが書きました:当然、http://sample.com/ のURLで、AAAにアクセスできる状態です。
これはAAAをスタートページに指定したためであって、リソースツリーの頂点にいるからではありません。
cobbbko さんが書きました:ですが、例えばCCCにアクセスしようと思うと、「http://sample.com/2/3.html」ではなく、「http:/ ... html」となります
これは、ホームページが二重に存在するため、結果的にこうなります。
cobbbko さんが書きました:AAA
BBB
  ┗CCC
リソースツリー上では上記があるべき姿です(というか、AAAはどこに居てもよい)。ツリー上ではAAAとBBBが同じレベルに存在するように見えますが、AAAをスタートページに指定した時点で、見た目上はAAAは既にそこにはなく、リソースツリー先頭のホームページの位置に居る(つまりBBBの親として存在している)ことになります。
cobbbko
メンバー
メンバー
記事: 6
登録日時: 2010年11月03日(水) 18:00

Re: フレンドリーURLの動作について

投稿記事 by cobbbko »

sama55さん、ご回答ありがとうございます。

sama55 さんが書きました: 難しく(厳密に)考えすぎてませんでしょうか?
cobbbko さんが書きました:詳細ですが、現在、以下の構成でサイトを作成したいと考えております。
AAA(ドキュメント番号:1)
  ┗BBB(ドキュメント番号:2)
    ┗CCC(ドキュメント番号:3)
としたく、サイトスタートに「AAA」を設定しています。
上の図は、確かに、ツリーの第一レベルに位置するリソース群は、スタートページにぶら下がるべきと考えるのが自然です。しかし、MODxでは、システム内の任意のリソースをスタートページにできるという仕組み(機能)があるため、ツリー上では親子でなくても、表示上では親子である、という状態が存在します。言い換えますと、スタートページに指定したリソースは、「サイト名」で表示されるリソースツリーの先頭行(つまりホームページ)にプログラム的に位置づけられ、見た目上、リソースツリーの第一レベルに位置するすべてのリソースの親になります。この考えからすると、上の構成は見た目の話で、ツリー上でこうしてしまうと、結果的に、ホームページが二重に存在することになり、話がややこしくなってしまいます。
ありがとうございます :)

ご指摘の通り、まさに「ツリー上で上記のようにしてしまうと、ホームページが二重に存在することになっている」状態です。
その結果、目指す形である、「http://sample.com/2/3.html」のURLでCCCを表示し ... ことになっております

これってやっぱり仕方ないかな・・・とは思っておりますが、何か抜け道があるようなら、と思いましたが、
冷静に考えるとなかなか難しそうですね。

mod_rewriteなどを駆使すればなんとかなるのかもしれませんが、それぐらいなら別にURLが「http://sample.com/1/2/3.html」となることもいたしか ... け入れたいと思います

URL以外の部分は、特に何か問題があるわけではなく、また、ご指摘いただいた、
sama55 さんが書きました:
cobbbko さんが書きました:AAA
BBB
  ┗CCC
リソースツリー上では上記があるべき姿です(というか、AAAはどこに居てもよい)。ツリー上ではAAAとBBBが同じレベルに存在するように見えますが、AAAをスタートページに指定した時点で、見た目上はAAAは既にそこにはなく、リソースツリー先頭のホームページの位置に居る(つまりBBBの親として存在している)ことになります。
という部分に関しても、まさにその通りですので、上記のような形で運営を続けたいと思います。
ありがとうございます :)
返信する