2013年12月3日火曜日

FuelPHPのindex.phpを省略する

前回の状態でセットアップは完了かなと思っていたのですが、コントローラを追加しても上手く表示できませんでした。
試してみたところ、URLにindex.phpをつければ大丈夫なようでした。
でもスカッフォルドで作ったページで、編集ページへのリンクのindex.phpが省略されていてリンクが機能していません。

FuelPHPに最初から入っている .htaccessにmod_rewriteの設定がコメントアウトされている状態で入っていたので、これを有効にすると index.php を省略して表示できるようになりました。

ファイルを開けばすぐにわかると思いますが、変更内容はこんな感じ。
RewriteBaseの値は、動かす環境に合わせる必要があります。
diff --git a/public/.htaccess b/public/.htaccess
index bffe79e..e99dd49 100644
--- a/public/.htaccess
+++ b/public/.htaccess
@@ -9,7 +9,7 @@
 
        # NOTICE: If you get a 404 play with combinations of the following comme
nted out lines
        #AllowOverride All
-       #RewriteBase /wherever/fuel/is
+       RewriteBase /~ユーザ名/プロジェクト名/
 
        # Restrict your site to only one domain
        # !important USE ONLY ONE OPTION
@@ -26,9 +26,9 @@
        #RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
 
        # Remove index.php from URL
-       #RewriteCond %{HTTP:X-Requested-With}   !^XMLHttpRequest$
-       #RewriteCond %{THE_REQUEST}                             ^[^/]*/index\.ph
p [NC]
-       #RewriteRule ^index\.php(.*)$                   $1 [R=301,NS,L]
+       RewriteCond %{HTTP:X-Requested-With}    !^XMLHttpRequest$
+       RewriteCond %{THE_REQUEST}                              ^[^/]*/index\.ph
p [NC]
+       RewriteRule ^index\.php(.*)$                    $1 [R=301,NS,L]
 
        # Send request via index.php (again, not if its a real file or folder)
        RewriteCond %{REQUEST_FILENAME} !-f

FuelPHPのプロジェクトをgitにツッコむ

歳を取ると、昨日のことでも自分が何をやっていたか分からなくなるときがあります。

下手したら昨日どころか、1時間前のことですら怪しい時もあります。

そんな時にも役に立つのがバージョン管理システム、VCSってやつですね

ということで、FuelPHPでプログラム作るにあたってgitにツッコミたいところですが、FuelPHPのプロジェクトを作った段階でgithubからクローンしてきているので、.gitができていたりしています。

とりあえず .gitフォルダ削除して git initしてしまえば、加齢による記憶障害には問題ないのですが、FuelPHPのバージョンが上がった場合に手動で入れ替えないといけないのがちょっと面倒そうです。

そこでWebをグルグルしてみると、参考になる記事がありました。今回はこちらの記事を参考に、gitに突っ込んでみました。

FuelPHPで作成するアプリケーションをGitHubで管理する

プロジェクト作る度に、コマンド打ってられないのでファイル削除して、サブモジュール追加してチェックアウト部分をシェルスクリプトにしておきました。

#!/bin/sh
rm -rf .git .gitmodules *.md docs fuel/core fuel/packages
git init
git submodule add git://github.com/fuel/core.git fuel/core
git submodule add git://github.com/fuel/oil.git fuel/packages/oil
git submodule add git://github.com/fuel/auth.git fuel/packages/auth
git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git submodule add git://github.com/fuel/orm.git fuel/packages/orm
git submodule add git://github.com/fuel/email.git fuel/packages/email
git submodule foreach 'git checkout 1.7/master'
#git remote add origin [リポジトリURL]
#git push -u origin master

fuelphpgitmod.shとかってファイル名で保存しておいて、oil createしたフォルダに移動して実行すればOKです。というか、oil createする時にこういった状態になったほうが素敵ですね。

そんな変更の動きはないのかな?と思ってgithub覗いてみたんですが、oil createがどこでやってるのか分かりませんでした(´・ω・`)

https://github.com/fuel/oil/tree/1.7/master