php の 正規表現で、


http://xxx.jp/●●/○○/

にアクセスすると、

http://xxx.jp/test.php?a=●●&b=○○

にhtaccessでリライトします。
これ自体は問題ないのですが、

●●や○○

に「 / 」スラッシュや「 . 」などが入ると、
リライトがエラーになってしまいます。

http://q.hatena.ne.jp/1178043276

こちらの質問の続きのような形になりますが、
アドバイスよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2008/12/02 17:44:30
  • 終了:2008/12/09 17:45:03

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/02 18:06:04

ポイント27pt

正規表現の問題というより、分解ルールが曖昧であるためにエラーが出ていると思われます。


たとえば、下記URLにアクセスするとしたら、

http://xxx.jp/a/b/c/

a = 'a' なのか a = 'a/b' が区別が付きません。

a または b のいずれかは「スラッシュやピリオドが付かない」というルールにしていただければ、正規表現で表現することができます。

id:onigirin

どうもありがとうございます。

そうなんです。

それで「 / 」が入るとおかしくなってしまって困っています・・・。

どちらかに「入らない」という制限をつけるしか方法がない、ということですね。

2008/12/02 18:12:36
id:y-kawaz No.2

y-kawaz回答回数1419ベストアンサー獲得回数2252008/12/02 19:02:35

ポイント27pt

http://xxx.jp/●●/○○/ で、●●と○○のどちらに / を含んでよいかが決まっているなら正規表現での表現は可能だと思います。

例えば、http://xxx.jp/a/b/c/ の場合、a/b と c にする場合は

RewriteRule (.+)/([^/]+)/$ index.php?c=$1&d=$2

で、a と b/c にしたい場合は

RewriteRule ([^/]+)/(.+)/$ index.php?c=$1&d=$2

としてやれば良いのではないかと思います。

id:onigirin

どうもありがとうございます。

両方に入る可能性があると、やはり厳しそうですか・・・。

2008/12/02 19:12:16
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/12/02 20:34:58

ポイント26pt

両方に入る可能性があると、やはり厳しそうですか・・・。

残念ながら、不可能です。

ヒトが見ても、どちらに入るか判断できないわけですから。

ましてやコンピュータ・プログラムが判断できるはずもありません。

id:onigirin

どうもありがとうございます。

/ でなく %2F で入るため、なんとかならないかなと模索してましたが、

リライトエンジンで / に変換されるのでできないみたいですね。

残念です・・・。

2008/12/03 15:19:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません