• 締切済み

クエリのあるURLを短縮して301リダイレクトしたいのですが。

何度やってもダメだったのでぜひ教えてください。 http://hoge.com/index.cgi?id=2&mode=individual&no=1&eid=973 というアドレスから http://hoge.com/index.cgi?mode=individual&eid=973 に301リダイレクトするにはどう.htaccessに記せばよいのでしょうか? RedirectPermanent /index.cgi?id=2&mode=individual&no=1&eid=973 http://m.wayohoo.com/index.cgi?mode=individual&eid=973 だと飛びませんでした。どう書けば飛んでくれるのでしょうか?ぜひご教示お願いいたしますm(_ _)m

みんなの回答

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.2

1です。少し調べてみたら、 http://okwave.jp/qa3521993.html こちらの内容でいけるようです。 ただ、正規表現が長くなってしまいましたし、 書式もhtaccess用になっているか未確認です。 手馴れた人ならもっと短くできるかも… RewriteEngine on RewriteBase /cgi/ RewriteRule ^/index.cgi\?([id|no]=[0-9a-zA-Z]+)?([mode|eid]=[0-9a-zA-Z]+)?([&id|&no]=[0-9a-zA-Z]+)?([&mode|&eid]=[0-9a-zA-Z]+)?([&id|&no]=[0-9a-zA-Z]+)?([&mode|&eid]=[0-9a-zA-Z]+)?([&id|&no]=[0-9a-zA-Z]+)?$ /index.cgi?$2$4$6 [R=301,L]

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

301ではないですが、 いっそのこと、perl内で処理してしまってはいかがでしょうか。 if($in{'id'} ne ""||$in{'no'} ne ""){ print <<"EOF"; <html> <head> <title>転送ページ</title> <meta http-equiv="Refresh" content="10;URL=http://hoge.com/index.cgi?mode=$in{'mode'}&eid=$in{'eid'}"> </head> <body> <p>10秒後に自動的に移動します。<br /> <a href="http://hoge.com/index.cgi?mode=$in{'mode'}&eid=$in{'eid'}"></a></p> </body> </html> EOF }

関連するQ&A