■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。
このフォーラムは閲覧専用のアーカイブです。

URLの生成方法について

emomo > URLの生成方法について @ 2010/8/24 21:52
Twitterで発言した所、こちらへ誘導頂きましたので詳細を記載させて頂きます。


BaserCMSをプレインストールした際の各ディレクトリのURLは
http://{BaserCMS の設置 URL}/about
という様に最後に/(スラッシュ)が入らない状態になっています。

しかしその設定のまま携帯サイトを作成しドコモの機種で下記の様なURLにアクセスすると
http://{BaserCMS の設置 URL}/m/about
となり、アクセスする際「サイトが移動しました(301)」と表示されてしまいます。

BaserCMSのデモサイト(http://demo.basercms.net/)の下記のURLもドコモの携帯で見ると
「サイトが移動しました(301)」と表示されます。
http://demo.basercms.net/m/news/archives/1
http://demo.basercms.net/m/news/archives/2

制作者など事前に判っている人であれば戸惑いませんが、
一般訪問者の場合はエラーメッセージにより、訪問を止めてしまう場合もあるかと思います。

.htaccessなどを修正して302のレスポンスを返し、メッセージを出さない方法などもありますが、
もう少し抜本的な対策として
http://{BaserCMS の設置 URL}/m/about/
という末尾に/(スラッシュ)が付くURLが生成出来れば良いかと思います。
(または http://{BaserCMS の設置 URL}/m/about/index.html 等)


なお上記の事例を検索する場合
「サイトが移動しました(301) ドコモ」
で検索するとBaserCMSに限らず、.htaccessを使用してURLを生成しているCMS全般で
同じ様な問題が多く見受けられます。

もし対処方法がありましたらお教え下さい。
ryuring > Re: URLの生成方法について @ 2010/8/24 23:39
こんばんは。

ひとつずつ確認していきたいと思います。

引用:
BaserCMSをプレインストールした際の各ディレクトリのURLは
http://{BaserCMS の設置 URL}/about
という様に最後に/(スラッシュ)が入らない状態になっています。


プレインストールした段階で、モバイル向けの about というページはないはずです。
これは、about というページを作成したという前提でしょうか?
それとも、about というページカテゴリを作成し、その中にindex というページを作成したという事でしょうか?

携帯から http://{BaserCMS の設置 URL}/about というURL にアクセスした場合、
確かに、http://{BaserCMS の設置 URL}/m/about という URL にリダイレクトされます。

ただ、m 付きの URL にアクセスした場合、ページ内の内部リンクについて、$baser->link 等の関数を使って
リンクを生成すると、 m 付きの URL になるようになっています。
ですので、ユーザーに告知するURL は、次のようにあらかじめ m 付の URL とする事が推奨されます。
http://{BaserCMS の設置 URL}/m/

そして、一つ注意すべき点として、デモサイトの携帯用のトップページについては、
フィードで読み込んだ部分のリンクが m 無しとなっている事です。

これは、あくまでPC用のフィードを読み込んでいるので、PC用の URL が表示されてしまう為です。
これに対処する為には、モバイル用のフィードを読み込む設定を追加し、それを貼り付けます。
フィードの設定で、読み込むフィードの URL を m 付きにします。
http://demo.basercms.net/m/news/index.rss


引用:
もう少し抜本的な対策として
http://{BaserCMS の設置 URL}/m/about/
という末尾に/(スラッシュ)が付くURLが生成出来れば良いかと思います。


これについては仕様上難しいというのが現状です。
というのは、「about」を「ページ」として生成するのか、「ページカテゴリ」として生成するのかというところで、
別のページとして扱われる為です。

■ 「about」をページとして生成した場合の URL
http://{BaserCMS の設置 URL}/m/about

■ 「about」をページカテゴリとして生成し、それに属する「index」というページを作成した場合 URL
次のどちらでもアクセス可
http://{BaserCMS の設置 URL}/m/about/
http://{BaserCMS の設置 URL}/m/about/index


結論としては、301を出さない為に、最初から m 付の URL を告知し、
フィード部分は携帯用のフィードを読み込むという事になります。

他に解決策などありましたらご教授お願いします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ