MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2012.05.18 21:45 (JST)
SEO Strict URLs プラグインは、フレンドリURLを利用している場合にMODxがはき出してしまう複数のURLをひとつに統一します。複数のURLを持つページは、サーチエンジンなどからペナルティを課せられる場合があります。このプラグインはそれを避けることができるでしょう。
参照ページ:SEO Strict URLs
デフォルトでは、フレンドリURLを利用する場合、MODxは、接尾辞に「.html」をつけてURLを生成します。これは、クエリ形式のURL(例:/index.php?id=54)を静的なURL(例:54.html)などにしてくれます。
また、エイリアス(例:sample)を指定しているならば、URLは「sample.html」になり、動的生成でありながら、静的URLを実現できるのは大変魅力的です。
しかし、この時、実は1つのドキュメントに対し、実に9つものURLが発生しているのです(つまり、9つの異なったURLから1つのドキュメントにアクセスできると言うことです)。
同じコンテンツ(内容)でありながら、そのドキュメントに対し異なったURLを存在させることは、サーチエンジンから見て、サイトとしての評価を下げる対象となる可能性があります(たぶん)。
また、エイリアスを拡張子付きで設定した場合、デフォルトではMODxの生成URLは「feed.rss.html」などになってしまいますが、このプラグインを導入しますと、この現象も回避できます。
では、実際、このプラグインを導入前の以下の条件下において、どんなURLが発生し、かつどうのようにアクセス可能な状態なのかを見てみましょう。
テストは簡単です。実際にアクセスしてみるとよくわかると思います。
SEO Strict URLs プラグインは、サイトに訪問したフロントエンドユーザやサーチエンジンに対して、301 redirect を使い、単一のURLを提供します(日本語変かも)。
つまり、1つのドキュメントに対して1つのURLという環境(状態)を作ります。
301 redirect に関しての詳細は、そちらの専門文献にゆずるとして(というか説明できるほど良くわかってないんですが)、おおまかに言うと、ブラウザや、サーチエンジンなどのユーザエージェント(UA)に対して、「キミがリクエストしたURLは恒久的に変更になったんだよ。今は、こっちのURLが正しいURLなんだ。だからそう理解しておいておくれ」。と、伝えます。
すると、サーチエンジンは「ふぅん。そぉなの?じゃ、クロール中にキミのところの以前のURLが見つかったら、新しいURLでインデックスしとけば良いんだね」と理解します(たぶんそうだとおもうんですけど。うちとこではそのように振る舞っているみたいなので)。
このことから考えますと、SEO Stirect URLs は、301 redirect によって強制的にURLを統一しているのではないかと思うんですが。。(でもよくわかりません...)。
では、SEO Strict URLs プラグインが実際にどのようなリダイレクトを行うのかの例を記します。
http://yoursite.com/container.html ->
http://yoursite.com/container/(ドキュメントがフォルダの場合)http://yoursite.com/site_start.html ->
http://yoursite.com/http://yoursite.com/feed.rss.html ->
http://yoursite.com/feed.rss (オプションで「basename」を指定した場合)http://yoursite.com/container.html ->
http://yoursite.com/container/ (オプションで「folders」を指定した場合)リソースのインストール方法について:プラグインの導入を参照してください。
&editDocLinks=Edit document links;int;1
&makeFolders=Rewrite containers as folders;int;1 &emptyFolders=Check
for empty container when rewriting;int;0 &override=Enable manual
overrides;int;1 &overrideTV=Override TV name;string;seoOverrideSEO Strict URLs プラグインのオプションを実現するためにテンプレート変数を作成します。
RSS feed 用のドキュメントやCSS用のドキュメントは通常テンプレートに「blank」を利用しますが、「blank」は、テンプレート変数を持つことができません。ので、blank代替えテンプレートを作ります。
[*content*]その他テンプレート名などは任意です。先に作成したテンプレート変数「seoOverride」を開き、このテンプレートもアサインしておいてください。
上記で設定したテンプレート変数は以下の意味を持ちます
URLは、以下の通り
rss feed など、エイリアスに拡張子まで含める場合は、これになります
※CSSをドキュメントとして作成する場合の設定もこちらになります※
SEO Strict URLs プラグイン導入時、Ditto 2.x 系の「extenders」パラメータで「request」を指定し、Ditto パラメータ付きでURLを指定したとき、そのURLにアクセスすると不要にリダイレクトされます。
※回避策は「SEO Strict URLs プラグイン導入時の「extender=request`」での問題」をご参照下さい※
これは、SEO Stirict URLs プラグインの機能ではなく、またMODxの運用に限ったことではない、サイト運用全般に関わることですが、URLを「WWW付き」か、「なし」かのどちらで運用するかを決め、URLを統一した方通いでいょう。
どちらに統一するか決めたら「.htaccess」に以下のように書きます(これはMODx096の「.htaccess」に記述されていますので参照してみてください)。
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^yoursite\.com [NC]
RewriteRule (.*) http://yoursite.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.yoursite\.com [NC]
RewriteRule (.*) http://www.yoursite.com/$1 [R=301,L]
どちらかを指定します。