タグ: mod_rewrite

さくらインターネットで、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的にどうなの?)ですので、あくまで備忘録だと思って記載しています。
もしわかる方がいらっしゃれば教えてください。