現在稼働中のWebシステムの保守を担当しています。
先日、お客様から「URLに付いている [ ] を消して欲しい」との依頼がありましたが、
やり方が分からず、困っております。
現在、
xxx/aaa[]/1,2,3/bbb[]/1,2,3/ このようになっているURLを
xxx/aaa/1,2,3/bbb/1,2,3/ に変更したいという依頼です。
現在、以下のようなフォームがあり
<form action="xxx.php" method="GET">
<input type="checkbox" name="aaa[]" value="1">
<input type="checkbox" name="aaa[]" value="2">
<input type="checkbox" name="aaa[]" value="3">
<input type="checkbox" name="bbb[]" value="1">
<input type="checkbox" name="bbb[]" value="2">
<input type="checkbox" name="bbb[]" value="3">
</form>
このフォームを送信するとURLは以下のようになりますが、
xxx.php?aaa[]=1,2,3&bbb[]=1,2,3
これを .htaccess で
xxx/aaa[]/1,2,3/bbb[]/1,2,3/
というように書き換えています。
このURLを、
xxx/aaa/1,2,3/bbb/1,2,3/
に変更することはできますでしょうか?
html、.htaccess、php、どの部分が改修になっても構いません。
[ ] を削除したいという理由としては、
インターネットの広告を出すときに、広告登録フォームでURLがエラーになるから、ということでした。
広告登録フォームでURLがエラーにならなければ良いのかと思い、
xxx/aaa%5b%5d/1,2,3/bbb%5b%5d/1,2,3/ というように
[ ] の部分をURLエンコードする方法をお伝えしましたが、%が付くのもダメということでした。
xxx/aaa_0/1/aaa_1/2/aaa_2/3/bbb_0/1/bbb_1/2/bbb_2/3/ というように
カンマ区切りじゃなくなるのも嫌だそうです。
あくまで
xxx/aaa/1,2,3/bbb/1,2,3/
の形が良いとのことでした。
お礼
> aaa[]=1&aaa[]=2&aaa[]=3&bbb[]=1&bbb[]=2&bbb[]=3 > となるはずです。 確かに、サンプルのformを送信してみたら、 urlは回答いただいたものになりました。 aaa[]/1,2,3のように書き換えているところを探したら、 JavaScriptではなかったですが、 phpでリダイレクトさせている箇所を見つけました。 その部分をaaa/1,2,3に変更し、 あとはexplode(",", $_GET["aaa"])で修正前と同じ配列に戻して対応しました。 重要なヒントになりました。ありがとうございました。