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

php の 正規表現で、

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

にアクセスすると、

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

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

●●や○○

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

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

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

●質問者: onigirin
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP アクセス アドバイス エラー スラッシュ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●27ポイント

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


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

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

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

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

◎質問者からの返答

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

そうなんです。

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

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


2 ● y-kawaz
●27ポイント

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

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

◎質問者からの返答

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

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


3 ● pahoo
●26ポイント

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

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

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

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

◎質問者からの返答

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

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

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

残念です・・・。

関連質問


●質問をもっと探す●



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