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

リダイレクトのためのhtaccessの書き方について。
以下の2つについて
RewriteEngine on
RewriteRule
の後にどのように書くのか押してください。

(1)
http://www.aaa.com/xxx/yyy/zzz/abc.php?aid=123

http://www.aaa.com/a123/
でアクセスできるようにしたい
(最後の/はあっても無くてもいいです)
(2)
http://www.aaa.com/xxx/yyy/zzz/abc.php?aid=123&bid=456

http://www.aaa.com/a123/b456/
でアクセスできるようにしたい
(最後の/はあっても無くてもいいです)

また、今後、更に後ろに、cid、didが増えていった場合についてもどのように書くのか教えてください。クエリ部分の順番が変わっても大丈夫ないように書くこともできるのでしょうか?

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:CID ON アクセス クエリ リダイレクト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● nyagao
●60ポイント

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

この内容の最後のほうに従えば、(1)は

RewriteRule ^/a([0-9]+)/$ /xxx/yyy/zzz/abc.php?aid=$1 [L]

(2)とそれ以降は

RewriteRule ^/a([0-9]+)/b([0-9]+)/$ /xxx/yyy/zzz/abc.php?aid=$1&bid=$2 [L]

とか

RewriteRule ^/a([0-9]+)/b([0-9]+)/c([0-9]+)/$ /xxx/yyy/zzz/abc.php?aid=$1&bid=$2&cid=$3 [L]

とかすればよさそうです。

上の例では、aid=?? の「??」を数字の列と仮定しているので、[0-9]+ という表現にしてます。もしアルファベットも許すなら [0-9a-zA-Z]+ などにする必要があります。こうすると、/aABC0d21ef/ で aid=ABC0d21ef が渡ることになるはずです。

順番が変わっても対応できるようにする方法ですが、たとえばこんな方法があるでしょうか。3つの id をパスの形で指定するのなら、

RewriteRule ^/([a-z])([0-9]+)/([a-z])([0-9]+)/([a-z])([0-9]+)/$ /xxx/yyy/zzz/abc.php?$1id=$2&$3id=$4&$5id=$6 [L]

とすると、/d123/q99989/a4543/ が /xxx/yyy/zzz/abc.php?did=123&qid=99989&aid=4543 に変わることになります。

ただし、この例では必ず /d123/q99989/a4543/ のように3段必要です。/d123/q99989/ や /d123/ にもマッチさせたいなら、そのための RewriteRule を別に書く必要があります。

正規表現については、

http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%B...

が参考になると思います。

◎質問者からの返答

とても詳しい説明ありがとうございます。

正規表現がどうも苦手で困ってました。

関連質問


●質問をもっと探す●



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