フレディのWEBエンジニアブログ

フレディのWEBエンジニアブログ

ヘイヘイヘーイ オゲンキデスカー!
フレディです。
みようみまねでプログラム書いてます。
自分メモ用エンジニアブログというやつ始めました。
間違ってたら教えてね(^^;)

Amebaでブログを始めよう!
フレディです。
サイトのリニューアルやってます。
結論です。時間がかかるので、CakePHPの導入はいったん取りやめます。
既存データの移行やら他にもいっぱいやることあるんで、とりあえず今回は、
以前自分で作ったPHPの登録ライブラリを流用することにしました。
負けではない。勇気ある撤退なのですw。
今は時間優先で、いつか後でやります(^^;)

ただし、そもそもCakePHPを使おうとした主な理由が、URLにプログラムの引数である?を
入れたくない、というのがあったので、そこは、.htaccessを工夫してみました。

今まで使ってたperlプログラムは、「product.cgi?id=xxx」ってかんじのやつで、
Google先生は問題なく拾ってくれているように見えてます。
でも調べてみたらやはり、?付きの動的ページはサイトによって上限数が決まっていて、
動的ページは検索に不利という噂は本当みたいです。(千件くらいは大丈夫みたいだけど…)
他の検索サイトは調べてないけど、?や=や&のついたURLは検索に不利というのが定説ですね。

とりあえず、「xxx.php?id=xxx」を使わない方法を導入することにしました。以下は例。
(※以下はサイトサーブで使える方法で、mod_rewriteがONである必要があります。
他にもAddTypeをいじる方法等がありますが、サイトサーブでは効きませんでした。)

/product/というディレクトリの下に、index.phpという名前で商品表示プログラムを置きます。
引数は「id=商品ID」で受け取ります。
通常は、http://xxx.co.jp/product/index.php?id=AD1234(商品ID)
というようなURLになるはずです。

/product/.htaccess を配置します。内容は下記のとおり。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /product
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)\.html$ index.php?id=$1 [L]
</IfModule>


これで、http://xxx.co.jp/product/AD1234.html(商品ID)というアクセスが可能になり、
あたかもhtmlファイルを読んでいるようで、実際はphpで動的ページを作ってることになります。

あ、ちなみに商品ページへのリンク元の記述を全部、http://xxx.co.jp/product/xxxx.html
にしとかないと、全くやる意味はありません。当然ですが(^^;)
フレディです。
最近家にこもってしこしこプログラムいじっているので(あ、今無職です)肩は凝るわ
寝不足だわ、全然進まないわ、ピグやっちゃうわで、困った状態です。
来週の認定日は失業給付もらえますように。

今日はサイトサーブ(レンタルサーバ)について少し。

サイトサーブ2
http://siteserve.jp/

うちの通販サイトはずっとサイトサーブで、自作CMS*でページ表示してます。
できてから18年たっているので、もうなんというか一昔前の手作りページってかんじ。
サイトサーブは、ショッピングカート使える以外はただのレンタルサーバなので、
ページは全部自分で作らないといけないです。
今どきは、ブログっぽくページ生成もできて、カートもセットになってるサービス
増えてるので、そっち使った方が全然楽でしょうな。

※CMS = Content Management System (ページ生成プログラムのこと)

ところで、最近いいなって思ってるサービスが「みんなのビジネスオンライン」。
なんと初年度無料。カートもドメインも無料。中小企業の支援の一環らしいです。

みんなのビジネスオンライン
http://www.minbiz.jp/

これからやる人にはこれおすすめ。ページもカートもポチポチボタン押すだけで
できあがり。全部クラウドです。まあ、できることは限られるけどね。

でも、うちのサイト、こういうサービスが使えない一番の理由は、サイズ違いで
価格も違う商品があったり、数種類選べたりとか、特殊な商品があること。
たいていは、価格が違うとサイズ違いでも別商品として登録しないといけない。
同一ページ内で価格の違う商品を並べて表示できる、市販のCMSはほとんどないと思う。
どうしてもしたかったら、自作CMS作るしかないんだよね。。
まあ・・そこにこだわらなければいいんだけどね・・妥協点というか。

あとは、ちょこっと新規に力入れたいので、サイトサーブ2のショッピングフィード機能に
期待してます。無料で無制限にあちこちのサイトに商品をばらまいてくれるらしい。
購入されたら何%か取られるけどね。新規顧客の獲得には役にたちそう。

しかし、サイトサーブからサイトサーブ2に移行することになって、一番困ってるのは、
今までは商品の価格などの情報はフォームからhiddenで送ってたのに、
今度から商品情報は事前にカート側に登録して、IDだけ送信するようになったこと。
もちろんセキュリティ的にはこの方がベターなんだけど。
つまり今度から商品の登録作業が、CMS(ページ生成用)と、サイトサーブ管理画面
(ショッピングカート用)で、2回やんないといけないのです。
実際に、運用で管理画面をいじるのは高齢の身内なので、そこも問題のひとつです。

2回登録はミスが出そうなので、なんとか、CMSのデータをエクスポートして、
カート側にインポートするしくみにしようと思ってますが、これがなぜかcsvじゃなくて、
エクセルしか受け付けないのでw、PHPExcelとか使わないといかんのだろうなあ。
結構面倒な作業です。

まあ、勉強にはなるので、いいんだけどね・・今は時間もあるし。

どこかに、いいサービスないかなあ。。
フレディです。
コネタをまとめるために、エンジニアブログ作ってみました。

今、自営サイトのリニューアルをやっています。
現サイトはなんと、15年くらい前に作った、perlとテキストベースのCMS。
サーバはずっとサイトサーブなので、今回、サイトサーブ2に移行予定です。
新規顧客獲得のため、ショッピングフィード機能に期待。

今回せっかくなので、cakePHP+DB 環境に移行しようかな~なんて、
甘く考えてたら、cakePHPの設定に丸3日かかりました・・・orz

以下、悩んだ末の覚え書き。

■サイトサーブ2は一応、cakePHPに対応しています。とのこと。
 http://faq.estore.co.jp/siteserve2/faq.php?f=740&c=217
 ※その根拠は、mod_rewriteモジュールがあり、.htaccess のAllowOverride Allもおk。
  あ、今回入れたのは1.3です。2以降はまだ翻訳が終わってないらしいのでスルー。
  あまりに悩んだのでアマゾンで本まで買ってしまった。2冊で5000円もしたじゃないか。

■サイトサーブ2は、phpファイルを全て 755 にしなければならない。(755以外ダメ)
 何この仕様・・。perl時代よく見た「Internal Server Error」が出たらほぼこれ。
 ※/app/tmp以下は777にすること。

■.htaccessには全部、RewriteBase を入れないとダメ。これ悩みました。
 ↓このページの一番下のパターン。英語がきちんと読めてたらこんなに悩まなかったかもだ。
 http://book.cakephp.org/1.3/view/917/Apache-and-mod_rewrite-and-htaccess

 以下、各階層の .htaccess ファイルをコピペしときます。
 インストールディレクトリは、/cake/ にしました。
 お店がリアルケーキ屋なんでURLちょうどよかったんでww

●/cake/以下の.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cake
RewriteRule ^$ app/webroot [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

●/cake/app/以下の.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cake/app
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>

●/cake/app/webroot/以下の.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cake/app/webroot
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


■あと、DBのホスト名とかサイトサーブのFAQ見ても全く情報ないので、
 phpMyAdminの中見て確認すべし。db.ドメイン名 になるみたい。
 /app/config/database.php.default を書き換えて、/app/config/database.php に変更。


これで動いた。やれやれ。
体操の内村君の表彰式見て寝る。
脇毛がちょっと気になるわよね。。