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

.htaccessでパラメータをディレクトリ名にしようと下記のように書いています。

RewriteEngine On
RewriteRule ^([一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)/([0-9a-zA-Z\-]+)/$ kekka.php?word=$1&itemno=$2 [L]

ディレクトリの一階層目は日本語を含んだアイテム名、ディレクトリの二階層目はアイテムID(半角英数字)で考えています。

つまり、
http://設置URL/アイテム名(日本語URLエンコード済)/アイテムID/
という形式でアクセスしたときに
http://設置URL/kekka.php?word=アイテム名&itemno=アイテムID
となることを想定しています。

とりあえずこれで動いたのですが、アイテム名が一部条件で動きませんでした。
それは、
・アイテム名に「+(半角)」など半角記号を含んだ時
・アイテム名に「&(半角)」を含んだ時
です。

これを回避する方法があれば、教えてください。


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

▽最新の回答へ

1 ● pahoo
●18ポイント

日本語文字だけでなく半角文字もURLエンコードの対象にした方がいいでしょう。

+(半角)は%2Bに、&は%26にエンコードされるはずです。

◎質問者からの返答

ありがとうございます・

半角「+」はUrlエンコード済みです。


2 ● kntr1
●52ポイント ベストアンサー

RewriteRule ^([^/]+)/([^/]+)/?$ kekka.php?word=$1&itemno=$2 [L]

上記のルールでいいのでは?

^先頭 [^/] スラッシュを含まない何でも1文字以上 次は/必須 次の[^/] スラッシュを含まない1文字以上

最後の/?$ は、最後/で終わっても終わらなくてもいいよという意味

? はてなは、一個前の文字が0文字か1文字という意味

$ 最後という意味

上記で解決すると思います。

解答にURLが必要みたいなので、とりあえず検索のリンクでもはります

http://www.google.co.jp/search?q=RewriteRule&sourceid=navclient-...

◎質問者からの返答

ありがとうございます!

明日、上記内容で、動作を確認してみます。

関連質問


●質問をもっと探す●



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