人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【mod_rewrite】

CentOs4.4でapache2.xを使用しています。

PHPであるフレームワークを使っていています。

サイト内のページの全てのURLがフロントコントローラとなってしまうため、mod_rewriteを使用して、静的ページっぽく見せたく思っています。

また、アクション名は、GETのaction=*****です。

ただ、ページによっては、アクション名以外のGET値も使用するので、それに関しては、通常通り$_GET['string']が取得できるようにしたいです。(詳細は、例3を見てください。)


例1)
現状:
http://example.com/index.php?action=View
理想:
http://example.com/View/

例2)
現状:
http://example.com/index.php?action=View_List_Search_From_Key
理想:
http://example.com/View/List/Search/From/Key/

例3)
現状:
http://example.com/index.php?action=View_List_Search_From_Key&keyword=searchword&page=3
理想:
http://example.com/View/List/Search/From/Key/?keyword=searchword&page=3



これらを実現させるための.htaccessの書き方を教えてください。

※最後の/は、別に無くても良いです。
※例3は、取得したいGET値を?からスタートしていますが、他の方法でも構いません。
スクリプトの中で、GET値を正常に取得できればいいです。

●質問者: PEPOTA
●カテゴリ:インターネット ウェブ制作
✍キーワード:.htaccess mod_rewrite PHP String URL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● iwaim
●35ポイント

これでどうでしょうか。

RewriteEngine On

RewriteRule ^/View/$ /index.php\?action=View [P,L]

RewriteRule ^/View/List/Search/From/Key/$ /index.php?action=View_List_Search_From_Key [P,L]

RewriteRule ^/View/List/Search/From/Key/\?(.+)$ /index.php?action=View_List_Search_From_Key&$1 [P,L]

◎質問者からの返答

なるほど、ありがとうございます。

この方法でも実現できそうなのですが、ちょっとニュアンスが違います。

アクション名は、ページ名のようなモノで、例に挙げた以上に沢山あります。

なので、View_List_Search_From_Keyのように固定ではなく、

Sample_Hoge_Fuga

のようにページ毎に変化していきます。


2 ● tezcello
●35ポイント

こんなのでどうでしょうか?

RewriteRule ^(.+)/([^/]+)/?$ $1_$2

RewriteRule ^View([^/]+)?$ index.php?action=View$1&%{QUERY_STRING}

最後の / を _ に置き換え、それを繰り返せいいと思ったのですが、それではうまく動作しませんでした。試行錯誤の末、辿り着いたのですが、チョット説明出来ません。

うちのMac(apache 1.3.33 php4.4.4)ではうまくいっているようですが...

◎質問者からの返答

ある程度うまくいったのですが、

上記にも書いたとおり、アクション名は必ずViewから始まるわけでもないのです。

というわけで、教えていただいた方法から^Viewを取ったのですが、画像関係もRewriteされてしまい、うまくいきませんでした。

思っていた以上に難しいですね。。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ