さくらインターネットで、concrete5 (5.7.5.2) の[sitemap]ページと[sitemap.xml]の対策

さくらインターネットで、concrete5 (5.7.5.2) の[sitemap]ページと[sitemap.xml]の対策

さくらインターネットで 起こることで 他のホスティングでは起こりません。
concrete5 5.7系において、『サイトマップ』ページのurlを 通常「sitemap」としますよね。

 しかしながら、さくらインターネットは、mod_rewriteが特殊な設定となっていて、
ないフォルダ名(sitemap/)があると、勝手に、拡張子を付与する機能があります。

ここでは、存在する(sitemap.xml)にします。とうか、されます。

なので、http://sample.com/sitemap/ とすると、mod_rewriteを設定していても、5.6系ではうまく、転送できたものが5.7系ではできません。
(※おそらく、プリティーURLのロジックがかわったせいでしょう)

最も、『サイトマップ』のページのURLを「sitemap_page」とかにすればいいんですけれど。2015/10/07現在、調査&トライ中ですが、いい方法が見つかっていません。^^;

あと考えた方法として、あまりカッコはよくないですが、index.php/sitemapにしてもいいならできなくはないですが、これも、mod_rewriteだけでは、ちょっとわかっていません。試験的に、以下のようにやってみました。

手順)concrete5 (5.7.5.2)の『管理画面』→『システムと設定』→(SEOと統計)『URLとリダイレクト』

プリティーURL
URLから index.php を除く
(.htaccess ファイル向けのコードはdefaultのまま。に以下赤行を追加)

RewriteEngine On
RewriteBase /
RewriteRule ^sitemap\.xml$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

カノニカルURL
http://sample.com/
SSL URL は空白(※利用される方は、適宜)

URLリダイレクト
カノニカルURLでのみ表示します。(チェックをはずす)

手順2)concrete5のドキュメントフォルダに「sitemap」とフォルダを作成。
その中に、index.phpを設置。
内容は以下、

<?php
header("Location: ../index.php/sitemap"); /* ブラウザをリダイレクトします */
/* リダイレクトする際に、これ以降のコードが実行されないことを確認してください */
exit;
?>

 あまりカッコがよくない(第一、SEO的にどうなの?)ですので、あくまで備忘録だと思って記載しています。
もしわかる方がいらっしゃれば教えてください。

(concrete5 5.7)のテーマを作成する::エレメンタル(Elemental)カスタマイズの準備

(concrete5 5.7.5.2)のテーマを作成する
エレメンタル(Elemental)カスタマイズの準備

教科書サイトは、以下を使用しています。
HTMLテンプレートをconcrete5テーマに変換する
http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/building-a-concrete5-theme/converting-an-html-template-to-a-concrete5-theme/

(重要)まず最初に、管理画面からすべてのキャッシュをオフにしてください。

こうしておかないと変更がわからなかったりしますので注意です。
※5.7系では、Bootstrap(ブートストラップ)のファイル拡張子 *.less のキャッシュ設定もありますね。5.7系では、キャッシュ設定が細かくできるようになっていますね。

『テーマ CSS キャッシュ』

無効 - LESS ファイルを使ったテーマを開発している場合に適しています。
有効 - ウェブサイトを高速化するのに役立ちます
『LESSの出力を圧縮』
無効 - 出力されたCSSをデバッグするのに適しています。
□生成されたCSSファイルのソースマップを有効にする
有効 - ウェブサイトを高速化するのに役立ちます

●基本全てを無効にしておきましょう。

※教科書サイトでは、記載ないですが、エラーも表示するようにしておきましょう。

管理画面 → システムと設定 → (サーバー設定一覧)デバッグ設定 → エラーを表示
■サイトユーザーにエラー情報を表示

一般的なエラーメッセージを表示するには無効化する
エラー詳細
エラーメッセージのみを表示
■エラーのデバッグ出力を表示

 重要で公開すべきでない情報を表示しかねないため、構築時のみに使用してください。

ドキュメントルート/application/themes

urbanic

と言うフォルダ名にしました。

テーマのディレクトリ (例. ドキュメントルート/application/themes/urbanic/)にthumbnail.png ファイル (120x90) を作成してください。管理画面で表示されるテーマのサムネイル画像です。
次に、description.txt ファイルを作成してください。最初の行にテーマの名前を、次の行に説明を書きます。
※ちなみに、エレメンタル(Elemental)のthumbnail.pngのサイズは、360x270です。
 (120x90)以上で、360x270サイズまででもいいということでしょうね。


エレメンタル(Elemental)テーマのカスタマイズの準備
(※elemental でフォルトのテーマのカスタマイズ。)

いきなり、エラーがでました。
が、エラーの内容から、おそらく、5.7で導入された、名前空間が影響しているのでしょうね。

Elemental テーマをコピーして改造する準備の方法
http://concrete5-japan.org/community/forums/design/post-10827/

katz515さんの記事の通り。

※ただし、フォルダ名も規則に則り変更する必要があります。
※が、しかし、

@import "../../../css/build/core/include/mixins.less";

@import "../../../../concrete/css/build/core/include/mixins.less";

Call to a member function hasPageThemeGridFrameworkOffsetClasses() on a non-object
のエラーが発生します。

※挙動をみるため、cssのフォルダ名を変えたり、権限を無効にしたりと、意地悪テストをしたためかと思われます。

★メンバー関数のオブジェクトがない。

 設定は合ってるけど。
 仕方ないので、一旦、テーマを既設のElemental テーマに戻し、カスタマイズ用を削除、再インストールすると、正常に機能しました。

ブートストラップ系の オブジェクトが認識しなくなったのだろうね。
ファイル止めたり、意地悪してたから。


★テーマの説明が変更した値になっていない。

参考までに、素のテーマを再度いれてみた。 例)xyz
ちゃんと、xyz フォルダに、thumbnail.png ファイル (120x90) と description.txt
description.txt の中身

1行目:xyz
2行目:xyz はテストのテーマです。この説明ちゃんと表示されるかな? 2015/09/16 Theme

これで、最低限のテーマができる。
これはきちんと表示されているね。

ということは、? エレメンタル

★Bootstrapの入ったDefaultテーマである『エレメンタル(Elemental)』は、主要な修正をしたければ、クラスを再構築するため、テーマの削除、インストールが必要です。

これで、きちんとファイルが変更されました。

※description.txtを使いたいなら、page_theme.php のクラスメソッドをコメントアウト削除します。
これはサイトに記載がありません。

(追記)2015/10/02
陥りやすい落とし穴
http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/building-a-concrete5-theme/common-pitfalls/

に以下の注意がありますので、コメントにせずファイルをバックアップして、
不要メソッドは削除したほうがいいですね。
カスタマイズするときに異常になる恐れがありますね。

PageThemeには、空のメソッドを残さない

page_theme.phpの変更箇所
--------------------------
protected $pThemeGridFrameworkHandle = 'bootstrap3';
/*
public function getThemeName()
{
return t('Elemental');
}
public function getThemeDescription()
{
return t('Elegant, spacious theme with support for blogs, portfolios, layouts and more.');
}
*/
--------------------------

page_theme.phpにてconcrete5の公式日本語サイトの検索窓で確認しますと、

5.7 オリジナルテーマについて
http://concrete5-japan.org/community/forums/5-7-x/post-9081/

Elementalに戻せなく成ってしまいました
http://concrete5-japan.org/community/forums/design/post-11161/

ということは、エレメンタル(Elemental)をベースとしたテーマのカスタマイズは、
初心者には、結構難易度が高いということなのでしょうか?

私もまだ、未確認ですが、構築予定のサイトは、やはりカスタマイズでしょうかね。

★方法として、ご提案できるのは、一度、簡単なBootstrapを利用したサイトを構築して、
(concrete5 5.7を利用しない)学習するのも案としては、いいかもです。

それで、できたサイトを、持ってくるのもありです。
エレメンタル(Elemental)だと、組み込まれたグリッドシステムを
使えるからいいのかな?
要検証です。(2015/09/16現在)

------------------------- 引用 ここから -------------------------
こちらのスレッドは確認したのですが、状況が違うようで解決しませんでした。
前述のエラーが出た後は、applicationディレクトリ配下に作成したオリジナルのテーマフォルダを削除しても、解決しません。
また、application/themes ディレクトリ自身をGitのローカルリポジトリにしていたので、
オリジナルテーマが動作していた頃のコミットに戻しても、事象が解決せず、
concrete5そのものを再インストールすると、(当然ですが)一旦、エラーが出なくなります。
再度、オリジナルテーマを「有効」にした直後、同じ事象が出てしまいます。
オリジナルテーマのディレクトリ配下になんらかの問題があると思うのですが、
過去に動作が確認できていたcommitログのバージョンに遡っても、事象が出てしまうので、困っております。
再度、一から、テーマを記述して、どこに原因があるのか冷静に調べてみたいと想います。
------------------------- 引用 ここまで -------------------------

「一括SEOアップデーター」と検索エンジンの挙動

 concrete5日本語公式サイトのフォーラムに気になる投稿を見つけました。

(2015/09/19時点)
(concrete5.7.5.2)

 5.7系の情報として、記載しておきます。


一括SEOアップデーターについて
http://concrete5-japan.org/community/forums/5-7-x/post-11309/#msg11669

katz515さんの投稿として、以下引用ここから
-----------------------------------
Re: 一括SEOアップデーターについて
2015年9月17日 at 22:46
お世話になります。

先週の土曜日にリリースされた 5.7.5.2 で、一括SEOアップデータでも、トップページの情報が編集できるようになりました。

ただ、 Google が無視していることもあるのですが Meta Keyword は、SEO 一括アップデータの項目から外れましたので、お気をつけ下さい。
-----------------------------------
引用ここまで。

「一括SEOアップデーター」にて、『Metaタグ説明』を修正

「一括SEOアップデーター」にて、『Metaタグ説明』を一括修正しました。

 管理画面 → システムと設定 → 『一括SEOアップデーター』

にて、各ページごとに修正ができます。

 WordPressからconcrete5 (5.6.3.3.ja)へ移植する際に、Metaタグ説明を ワークエリア、
もしくは、備忘録として、使っていたのを削除もしくは、きちんとした説明に変更しました。

お客様に必要な情報が、きちんと届くようにするための、検索エンジンへの配慮ですね。

これで、検索エンジンに不必要なデータがインデックスされて、検索時に表示されないようになったと思います。 最も、この説明で検索されても困りますが・・・。

 ※一応、備忘録ということで、エイリアスを作成しています。