CodeIgniter 3でURLに付加されるindex.phpを外したい(取り除きたい)

結論

ブログに書いていたら長々としてしまったので、結論から。

以下の2つの対応をすることでindex.phpを外すことが出来ます。

1:.htaccessを追加する

index.php と同じ階層に.htaccssを追加して、以下を記述する。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2:application/config.phpを編集する

$config[‘index_page’] = ‘index.php’;

となっている箇所を

$config[‘index_page’] = ”;

に変更する。

CodeIgniter 3でウェブアプリケーションを構築すると、URLにindex.phpが付いてしまう

http://example.com/index.php/hogehoge/

CodeIgniterではデフォルトで上記のようなURLを用いてルーティング(必要なコントローラ呼び出し)がされるようになっているようです。

今回の記事はこのURLの中の

index.php

を取り除く為の方法を紹介します。

毎回CodeIgniterの初期設定としてこの作業をせねばならぬだろうと思い、備忘録をかねての投稿です。

困ったときのCodeIgniterユーザガイド

以下にて解説されておりました。素晴らしい。

CodeIgniter の URL – index.phpファイルを外す
http://codeigniter.jp/user_guide/3/general/urls.html#index-php

要は、.htaccessで以下のように書いてあげると良いよ。ということでございました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

よっしゃ出来た!と思ったら、意外な落とし穴が…

form_openなどを呼び出すと依然として付加されてしまうindex.php!!!

よしよし、と思いながらチュートリアル「ニュース記事を作成」を行っていた時の事、form_openで出力されるURLになぜかindex.phpが付いてしまうということを発見。

ニュース記事を作成 – フォームを作成する
http://codeigniter.jp/user_guide/3/tutorial/create_news_items.html

form_open関数の出力

<form action=”http://localhost/index.php/news/create” method=”post” accept-charset=”utf-8″>

これは、.htaccss以外にも修正箇所があるのではないかと思い、探って見ました。

application/config.phpの修正が必要だった

application/config.phpを見ていた所、それっぽい設定箇所が38行目にありました。

英語の説明文をGoogle翻訳するとこんな感じの事が書いてあるようです。

通常、これはindex.phpファイルになります。ただし、別の名前に変更している場合を除きます。
mod_rewriteを使用してページを削除する場合は、この変数を空白に設定します。

なるほどmod_rewriteを使用してindex.phpを削除している場合はここを空白にせよ。と。
ということで、この設定箇所からindex.phpを外したらform_openでも表示されなくなりました。

$config[‘index_page’] = ”;

感想

CodeIgniter 3の初心者から抜け出せないまま時が経ってしまった。

長期スパンで学んで行くためにも基本的な部分はこれからもブログにしていこうと思いました。



Mauticってなんだ?マーケティングオートメーション(MA)ってなんだ?

Mautic Advent Calendar 2016 Day 9 書きます

http://www.adventar.org/calendars/1402

今年も残すところあと23日となりました。月日が経つのは早いものです。

昨日のKatzさんの投稿「Mautic と concrete5 の良い関係 〜 ユーザー情報連携のススメ」に続き、今日は私がMautic Advent Calendarのバトンを受取りました。

本日は、「Mauticってなに?」「マーケティングオートメーションってなに?」という方に向けたブログを書きます。

ただ、かくいう私もマーケティングオートメーションという単語に触れたのもMauticに触れたのも、今年2016年が初めてでした。いわばMautic元年!

マーケティングオートメーションという言葉すら知らなかった私がMauticに出会い、学んだことを、これからMauticに出会い、学んで行く方のためにお伝え出来たらと思っています。

少しでもお役に立てれば幸いです。

マーケティングオートメーション(MA)ってなんだ?

Mauticを紹介する前に、マーケティングオートメーションについてお話をする必要があります。

Mauticはマーケティングオートメーションツールのひとつだからです。

「マーケティングオートメーション?!」

なんだか難しく聞こえますが、安心してください!

できるだけ横文字を使わずに簡単にすすめていきます。

営業活動を自動化しよう

マーケティングオートメーションとは、一言で言うならば企業が行っている営業活動の一部を機械に任せてしまおう(自動化)という仕組みのことです。

マーケティングオートメーションを導入することで、営業活動の効率化を図ることが出来ます。

多分これだけの説明では「?マーク」がたくさん付くと思うので、今年9月のMautic Meetup Nagoyaで発表をした資料から抜粋してマーケティングオートメーションについてもう少し掘り下げて行きましょう。

こんな悩みはありませんか?

こんな悩みありませんか?

メールや電話で問い合わせをもらって意気揚々と営業に行ったものの、受注になかなか結びつかない…

資料作成の時間や打ち合わせの時間、交通費ばかりかさんでしまう。

こんな経験をしている方、結構いらっしゃるのではないでしょうか?

なぜこんなことが起きるのか?それは、問い合わせしてきたお客様の本気度は、お客様によってまちまちだからです。

お客様それぞれの本気度はバラバラ

オープンハウスに来た3組のお客様、どのお客様を接客する?

オープンハウス

例えば、皆さんが分譲住宅を販売する不動産の営業マンだと仮定して考えてみましょう。分譲住宅販売では、大抵の週末に実際の物件でオープンハウスを開催します。

そのオープンハウスに以下の3組のお客様が同時に来場されました。

  1. たまたま近所に分譲住宅が建ったことを知り、時間つぶしに来場したお客様
  2. 結婚を期に住宅購入を検討しているが、まだ分譲住宅にするか、注文住宅にするか、マンションにするか何も決まっていないお客様
  3. 不動産を具体的に検討していて、インターネットを見ていたらちょうど希望のエリア・希望の価格で販売されている物件があったから来場したお客様

もし、あなたが不動産の営業マンで、今月なんとしても1件契約が欲しい。と考えていた場合、どのお客様を真っ先に対応しますか?

ほとんどの方は、本気度の高そうな「3」のお客様に接客を仕掛けたいと思うのでは無いでしょうか?

ただ、実際には接客をして、話を聞いてみないと家を購入したいかどうかといった本気度はわかりません。話を聞いて経験と勘で本気度の高そうなお客様を嗅ぎ分けて行くスキルが必要になります。

しかしそういったスキルは一朝一夕で身につくものではありません。何年も何十年も営業をすることで身につくことだと思います。

本気度によって接客方法も変わるはず

また、お客様の本気度によって接客方法も異なってくるはずです。

「1」のお客様はカタログを渡してご友人を紹介してくださいね。というくらいで、長期的に追客が必要になるお客様。

「2」のお客様は、ぼんやりとはしているものの、近い将来家を買いたいというお客様ですし可能性はゼロではありませんし、カタログを渡してさようならではなく、他社との比較表をメールで送ったり、説明会を開いたりと今後、中期的に追客が必要です。

「3」のお客様は、最後の決断を促す為の追客が必要になります。

本気度によって対応方法も異なってきます

本気度が数値化されたら楽だと思いませんか?

もし接客する時点で、お客様の本気度が数値化されていたら、若手の営業マンでも経験豊富な営業マンも接客がしやすいと思いませんか?

「そんなの無理でしょ?」とお考えのあなた。実は出来るんです。

そう、マーケティングオートメーションツールならね。

本気度の数値化が出来るマーケティングオートメーション

マーケティングオートメーションツールは、ざっくりと以下のことをしてくれます(もちろんもっと機能はたくさんあります)。

  1. ホームページアクセスを匿名の見込客として登録
  2. フォーム送信・資料請求などの際に見込客情報を更新
  3. 設定したタイミングで自動で資料メール等を見込客に送信
  4. 見込客がメールを開いたかどうか、資料をダウンロードしたかどうかを判定
  5. メールを開いたら+10ポイント、ダウンロードしたら+10ポイントと言った具合に、お客様の本気度を数値化

例えば以下のようにマーケティングオートメーションの設定をしたとします。

見込客のスコアリング

この設定で運用すると以下のような見込客のリストが出来上がります。

集まった見込客のリスト

これを見たら、見込客の本気度が一目瞭然ですね。Dさんが一番受注の見込が高そうだとわかります。

このように、マーケティングオートメーションツールは、見込客を自動で収集し、各種案内を自動(もしくは手動)で送信することで見込客にその気を起こさせ、受注確度を高めていってくれます。

もちろん、全自動では無いので営業さんの仕事がゼロになることはありませんが、セミナー開催案内やセミナー参加のお礼といった事務的な営業活動はマーケティングオートメーションツールが代行してくれるはずです。

見込客の選別

マーケティングオートメーションでは、ポイントの機能以外にも、以下の図のように見込客をステージごとに分類して管理することが出来ます。下方のステージに進むにつれて、より受注に結びつきやすい見込客として認識できます。

他のシステムとの連携が重要

マーケティングオートメーションは、営業活動の中間に位置する仕組みです。

そのため、各システムや取り組みとの連携が非常に重要になります。

見込客を取り込む為には、ウェブサイトにアクセスしてもらう仕組みを強化したり、実際にセミナーを開催して名刺交換した方の情報を登録したりという作業が必要ですし、お客様を口説き落とすにはセールスフォースオートメーション(SFA)との連携も必要になるかもしれません。

様々なシステムとの連携が重要

それぞれのシステムとの役割の違い

マーケティングオートメーションツールと、SFA(セールスフォースオートメーション)、CRM(顧客管理システム)との違いは以下のとおりです。

マーケティングオートメーションは特定の個人に向けてアプローチするためのツールではなく、特定の見込客の集合に対してアプローチするところが大きな違いかと思います。

マーケティングオートメーションとセールスフォースオートメーション、顧客管理システムとの違い

ごめんなさい…続きは動画でどうぞ

続いて、Mauticとは何か?について記載しようと思いましたが、力尽きました。ごめんなさい。

おぉ。Mautic面白そうやん!となった方、SlideShareと動画をご参照ください(笑)

明日はこの方

明日、アドベントカレンダーのバトンを受け取るのはなんとKatzさんです。

「名古屋 Mautic コミュニティ活動まとめ」を書いてくださるようです。楽しみ!

 



【mautic】mauticをCPIのレンタルサーバACE01にインストールしてみた

mautic.PNG

mauticという単語がチラホラ私の周りを賑わせていたので、CPIの共用レンタルサーバ シェアードプラン ACE01にインストールしてみました。

mauticの読み方は、マウティックでいいのかな?

インストール方法を見る

mauticのドキュメントが以下に有ります。英語です。

https://www.mautic.org/docs/setup/getting_started.html

Step 1: Install Mautic

If you have already downloaded the zip from the download page or have installed Mautic through some other source (Softaculous, Bitnami, Digital Ocean etc…) then you have already completed the first step. If not then you will need to upload the Mautic package (a zip file) to your server; unzip the files; and then navigate to that location in your browser. You will find Mautic has a very easy to follow on-screen installation process.

zipファイルをダウンロードして、サーバに放り込んで解凍するだけで動くよ。
という雰囲気のことが書いてありましたので、実際にCPIのレンタルサーバACE01に設置してみようと思います。

mauticダウンロード

以下のURLからダウンロードしてきます。最新版は1.3.0のようです。

download.png

mautic Download
https://www.mautic.org/download/

 

ダウンロードした圧縮ファイルをサーバにアップロードします

FTP等でアップロードします。

SSHでサーバに接続して解凍します。

ファイル数が1万近くあるので、FTP等でアップするのは大変です。
サーバにSSHで接続してmauticの圧縮ファイルを解凍(unzip)します。

FTPでアップロードするの面倒だったので、wgetで直接mauticのzipファイルをダウンロードしようと思ったのですが、認証が弾かれて上手く行かず。FTPでアップロードしてから解凍という手間な手順をとっております。

.htaccessにCPI特有のおまじないを書く

mauticにもとから入っている.htaccessにCPIのレンタルサーバでPHPを動作させるために必要な記述を追加します。

今回使ったサーバがACE01_2011のものだったのでPHPのバージョン5.5.16を指定しましたが、ACE01_2015でしたらPHP7を指定しても多分動くんじゃないかな?確認したかったけどごめんなさい。

ブラウザでURLにアクセスしてみる

すごい!動いた!

install.PNG

これでインストールを進めていけばいいようです。

Some Recommendationsをクリックするとなんか表示されます↓

install2.PNG

NextStepを押すとデータベース情報を設定する画面が表示されます。

install3.PNG

データベース情報を入力します。Database Table Prefixという項目が有りました。

これを入れると一つのデータベースに複数のMauticがインストールできるのかもしれません(未確認)

install4.PNG

データを入力してNextStepを押すと管理者アカウントを設定する画面が表示されます。

install5.PNG

管理者のアカウント情報を入力します。

install6.PNG

NextStepを押すとメール送信時の名前やメールアドレスを設定をする画面が表示されますので入力します。

install8.PNG

NextStepを押すと!終わったよ!というお褒めの言葉が!

案外簡単!素敵!

install9.PNG

表示されたProceed to Mauticを押すとログイン画面が表示されます。

install10

ユーザ名・パスワードを入れてログインをすると管理画面が無事に表示されました!

install11.PNG

まとめ

ものすごく簡単にmauticのインストールができました。インストールが簡単ってそれだけで使いたくなりますね。

ところでインストールはしてみたものの、mauticが何のソフトなのかわかっていません(笑

mauticの使い方はこれから学んでいきます。



【concrete5】concrete5 ver5.7以降で最速でテーマを作る方法

themes.PNGWordPressでもconcrete5でもそうですが、テーマを作るぜ!という話をした時に尻込みしてしまう方が結構います。(特にデザイナーさんに多いような)
理由は、「プログラム言語を怖い。PHP怖い。」という答えが私の周りには多かったです。

安心してください。
concrete5はWordPressよりもテーマの作り方が簡単です。
最初はおまじないだと思っておいて後から少しずつ理解していけばOK。

デザイナーさんでも怖がることが無いように、最低限必要なファイルだけでサクッとテーマを作って行こうと思います。

最低限必要なファイルとは

以下の3ファイルだけです。
しかもdescription.txtとthumbnail.pngはただのテキストファイルと画像です。
デザイナーさんでもこれなら触れますね。

3のdefault.phpだけはプログラムですが、基本HTMLファイルですので気を楽にしてください。

1 description.txt

テーマの説明テキストファイル。

2 thumbnail.png

テーマの画面キャプチャ。360×270のPNG形式。

3 default.php

デフォルトのテーマファイル本体

たった3つでテーマができる!素敵concrete5!
それでは、順を追ってテーマを作っていきます。

 

前提:静的HTMLを作る

まずはconcrete5云々の前に、HTML+CSS+JS等を使って静的なサイトを作ります。
作ってない方で、テーマ学習をしたい方は適当なHTMLテンプレートをググッて探しておきましょう。

1: テーマを格納するフォルダを用意しよう

theme-folder.PNG

application/themes フォルダの中に、適当なフォルダを作りましょう。

例: application/themes/sample-theme

2: description.txtを作る

description-text.PNG

空のdescription.txtを作成した後、以下の2行を追加します。
1行目はテーマ名。2行目はテーマの説明です。
必ずUTF-8で保存しましょう。
description.txtの内容

テーマ名
このテーマの説明を書きます。
補足
concrete5 5.7以降は、page_theme.phpファイルを作って getThemeName() と getThemeDescription() というメソッドにテーマ名やテーマの説明を記述できるようになりました。
今回はできるだけ簡単に済ませたいので、上記の方法を採ります。

 

3: thumbnail.pngを作る

theme-thumbnail.PNG

360px×270pxのPNG画像を作ります。テーマをひと目で認識できるようなキャプチャ画像が良いでしょう。

以下の画像を右クリックして保存頂いてもOKです。

thumbnail.png

4: HTMLファイルをdefault.phpにリネームする

themes.PNG

前提として作ってあるHTMLファイルをリネームして「default.php」にします。

 

5: おまじないをHTMLファイルにおまじないを書く。

・default.phpの一行目

<?php defined(‘C5_EXECUTE’) or die(_(“Access Denied.”)); ?>

直接テーマファイルをコールさせないためのおまじないで、今後新たにテンプレートファイルを追加するときなどは必ず上記を書くようにしましょう。

・スタイルシートや画像の読み込みの部分

各ファイルへのパスを出力してくれるおまじないです。以下のように記述します。

・head開始タグ内

タイトル・文字セット等を自動的に出力してくれます。
なので、<title>タグ・<meta charset=”utf-8″>は削除してOKです。

・body終了タグの直前

管理バーやJSの出力をしてくれます。

・body開始タグ直後、Loader::element(‘footer_required’)の直前

bodyの開始タグ直後と終了タグ直前に以下を記載します。
divの閉じタグはLoader::element(‘footer_required’)よりも下に記載します。

この記述をすることで、concrete5が適切なCSSクラスを出力できるようになり、concrete5のインターフェースが正しく動作するようになります。

例えばconcrete5にはコンポーザーという機能が有りますが、上記を記述しておかないとコンポーザーが表示されない等の問題が発生します。
案外見落としがちなので要チェックです!
かくいう私もコンポーザーが動作しなくて、プログラムとずっとにらめっこしていた経験が有ります。

・エリアを指定する

concrete5-area.png

concrete5はエリアにブロックを配置してサイトを作っています。
テーマファイルには難しいプログラムを書く必要は無く、エリアの場所だけを指定してあげます。

各ページのコンテンツを書くエリアを定義するために以下のコードを書きます。

 

・グローバルエリアを指定する

ページ共通のグローバルエリアを設置するために以下のコードを書きます。

 

 

まとめ

テーマ作成、簡単でしたでしょうか?

ちょっと文章ばかりでは理解しづらい。という方、以下にテーマの作り方が動画と一緒に上がっていますので参考にしてください。

http://concrete5-japan.org/help/5-7/tutorials/theme-design-basic-seminar/

また、テーマ制作で陥りやすい落とし穴というページも参考になります。

http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/building-a-concrete5-theme/common-pitfalls/

蛇足

先日のコンなご(concrete5名古屋ユーザーグループ)でKatzさんがconcrete5のコーディングガイドラインを紹介していました。
このコーディングガイドラインには、concrete5におけるコーディングで●●をしてはいけない。といったの禁止事項なども書かれています。
ぜひ参考にしてみてくださいね。

https://github.com/katzueno/concrete5-Coding-Guideline/tree/japanese

あと、このツイートで紹介してくれている仕様書テンプレートも参考になりましたので紹介します。

concrete5_仕様書テンプレート_一般公開

https://drive.google.com/folderview?id=0BzWUde-u-vKvbDhGSUY3TDliak0&usp=drive_web#list



CodeIgniter 3入門(インストールから設定まで)

CodeIgniterのことを勉強したのでメモ。日本語サイトにCodeIgniter Ver.2のユーザガイドがあったのですがCodeIgniter Ver.3のユーザガイドの日本語版が無く、辞書とにらめっこしながら進めました。

間違い等あればご指摘くださいませ。

これからCodeIgniterを学ぶ方のお役に立てれば幸いです。

2016年2月23日追記
kenjis様より日本語ユーザガイドのURLをコメント頂きました。
現在翻訳中とのことです。ありがとうございます。

日本語ユーザガイド
http://codeigniter-jp.github.io/user_guide_src_ja/

2017/01/26 URLが変更されていました。以下が日本語ユーザガイドになります。

http://codeigniter.jp/user_guide/3/

CodeIgniterとは

PHP言語のフレームワークです。

フレームワークとはよく使う処理のお道具箱みたいなもので、フレームワークを使うことによりプログラムの開発効率を上げることができます。

CodeIgniterの読み方

ウィキペディアによると、「コードイグナイター」と読むそうです。なるほど。

CodeIgniter 3の動作要件

CodeIgniter 3を動作させるにはPHP version 5.4 以上が必要です。

以下のデータベース(バージョン)に対応しています。

  • MySQL (5.1+) via the mysql (deprecated), mysqli and pdo drivers
  • Oracle via the oci8 and pdo drivers
  • PostgreSQL via the postgre and pdo drivers
  • MS SQL via the mssql, sqlsrv (version 2005 and above only) and pdo drivers
  • SQLite via the sqlite (version 2), sqlite3 (version 3) and pdo drivers
  • CUBRID via the cubrid and pdo drivers
  • Interbase/Firebird via the ibase and pdo drivers
  • ODBC via the odbc and pdo drivers (you should know that ODBC is actually an abstraction layer)

参照
http://www.codeigniter.com/user_guide/general/requirements.html

CodeIgniter 3のライセンス

MITライセンスです。

The MIT License (MIT)

参照
http://www.codeigniter.com/user_guide/license.html

ちなみに、CodeIgniter 3.0からMITライセンスになったようで、2.xまでは独自のCodeIgniterライセンスというライセンスを採用していたようです。

 

CodeIgniter 3のインストール

CodeIgniterのダウンロード

CodeIgniterの公式サイトからダウンロードしましょう!執筆時、Version 3.0.4が最新バージョンでした。

https://codeigniter.com/

キャプチャ.JPG
公式サイトトップページのDownloadからCodeIgniter Version 3をダウンロード

アーカイブを展開

ダウンロードしたアーカイブを展開します。

ファイルをアップロード

「展開したファイルをサーバ上にアップロードします。」とサラッとCodeIgniterの公式に書いてあるのですが、以下の画面キャプチャで選択してあるファイルだけで問題ないかと思います。

キャプチャ.JPG
application sysytem index.php license.txt のみのアップロードで大丈夫っぽい

CodeIgniter 3の設定

基本設定ファイル(config.php)を編集する

application/config/config.php

を開き”base_url”の設定をします。

$config[‘base_url’] = ‘http://example.com/’;

基本設定ファイル(config.php)を忘れずにサーバにアップロードしましょう!

とりあえず表示確認してみよう

ブラウザで、サイトを表示してみましょう!以下のように表示されていれば設置成功です。

無題.png

データベース設定ファイル(database.php)を編集する

設置が確認できたら更に設定を行っていきます。データベース使わない場合などはこの項目の作業は不要かと思います。

application/config/database.php

を開き以下を変更します。

全ての設定が必要というわけではなく、必要な部分だけ設定します。

設定する主な項目

hostname: データベースサーバのホスト名
username: データベースのユーザ名
password: データベースのパスワード
database: データベース名
dbdriver:データベースのタイプ(mysqli(MySQLの場合), postgre(PostgreSQLの場合))

参考
http://www.codeigniter.com/user_guide/database/configuration.html

.htaccess を設定する

CodeIgniterの初期設定では、以下のように index.php が含まれたURL構造になってしまいます。

これを回避するために.htaccessファイルを作成して以下のように記述します。

作成した.htaccessファイルは忘れずにサーバにアップロードしましょう。license.txtと同じ位置に置くと良いでしょう!

参考
http://www.codeigniter.com/user_guide/general/urls.html#removing-the-index-php-file

感想

いろんなフレームワークがありますが、かなり簡単に設置出来るのがGood!

(2.x系は豊富だけど)日本語のドキュメントが少ないのでGoogle翻訳を駆使して理解していく必要がありそうです。