フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処  【解決済み】

質問全般・改善要望
返信する
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処

投稿記事 by Kenny »

-----
ご利用のサーバ:heteml
MODXのバージョン:1.0.13J-r1
PHPのバージョン:5.4.27
MySQLのバージョン: 5.6.13-log
ブラウザ:Firefox29
-----

お世話になります。

ありそうな質問でしたので、フォーラム内を調べてみたのですが、見つけることができませんでしたので、お願いします。

コンテナ属性のリソース、例えば…
「contents」を作成すると

/contents/
というページと

/contents.html
というファイルが生成されるようで、

/contents/
だけに統一させたい場合は、301転送という方法になってしまうのでしょうか。

googleanalyticsでアクセス解析をしていて、以前からちょっと気になっていたことです。

どうかよろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処

投稿記事 by yama »

コード: 全て選択

if($modx->documentObject['isfolder']==='1'&&$modx->config['make_folders']==='1'&&substr($_SERVER['REQUEST_URI'],-1)!=='/') {
    $url = $modx->makeUrl($modx->documentIdentifier);
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://example.com/');
    $modx->sendRedirect($url);
}
上記内容のプラグインを作成してシステムイベント OnLoadWebDocument にフックしてみてください。
(sendRedirect関数の引数を全て使えば2行でまとまりますが、分かりやすさ優先で書いてみました)

http://modx.jp/docs/tips/seo.html
カノニカル属性も設定しておくとより確実です。
また、contents.htmlというURLが実際にどこかで出力されている可能性があるなら、これを解決するのがベストだと思います。
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

Re: フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処  【解決済み】

投稿記事 by Kenny »

Yama様

いつもありがとうございます。

プラグインを制作して戴きありがとうございます!
プラグインを入れました所、うまく動くようになりました。

有難うございました。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処

投稿記事 by yama »

コード: 全て選択

if($modx->documentObject['isfolder']==='1'&&$modx->config['make_folders']==='1'&&substr($_SERVER['REQUEST_URI'],-1)!=='/') {
    $url = $modx->makeUrl($modx->documentIdentifier);
    header('HTTP/1.1 301 Moved Permanently');
    $modx->sendRedirect($url);
}
すいません、少し間違えてました。上記コードに置き換えてください
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

Re: フレンドリーURLにしていて、コンテナ属性のリソースで、2つのファイルが出来てしまう場合の対処

投稿記事 by Kenny »

Yama様

有難うございます!

コードを入れ替えておきました。

キッチリ動作する事確認できました。

有難うございました。
返信する