• 締切済み

動的URLから静的URLへの301リダイレクト

下記のように動的URLを静的なURLに置き換えています。 http://www.sample.com/dir/aaa/index.php?content_id=1http://www.sample.com/aaa_index.content_id_1.htm この動的URLを、置き換えた静的URLへ301リダイレクトさせたいのですが、うまくいきません。 htaccessの記述を下記のようにしましたが、多分、動的URLの「?」があるためうまくいかないようです。 RewriteEngine on RewriteBase / RewriteRule ^dir/aaa/index\.php?content_id=(.*)$ /aaa_index.content_id_$1.htm [R=301,L] 「?」が含まれる動的URLから静的URLに301リダイレクトさせたい場合、どのように記述すれば良いでしょうか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

No1です。 すいません。特殊文字に反応して、機械的にリプライしてしまいましたが、QUERY文字列は別途チェックが必要でした。 RewriteBase / RewriteCond %{QUERY_STRING} content_id=(.*) RewriteRule ^dir/aaa/index\.php$ /aaa_index.content_id_%1.htm [R=301,L] RewriteCondのマッチ文字列は $1 でなく %1 で受けられます。

keitarou07
質問者

お礼

ありがとうございます。 教えていただいたやり方を試したところ、リダイレクト後のURLの最後に?content_id=1が付いてしまいうまくいかなかったのですが、 RewriteRule ^dir/aaa/index\.php$ /aaa_index.content_id_%1.htm? [R=301,L] と?を付けることでリダイレクトできました。 これで合っているのか不安ですが・・

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

珍しいですね。普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。 ?は正規表現の特殊記号なので、?の前に、\ を書いてください。 ちょっと興味ですが、動的URLに見せかけたい理由って何なんですかね。

keitarou07
質問者

補足

>?は正規表現の特殊記号なので、?の前に、\ を書いてください。 これはすでに試していますが、これではだめなようでしたので質問しました。 >珍しいですね。普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。 その通りです。なかなかいい例が見つかりません。 しかしできないことではないと思いますので、他の記述方法をご存知の方に教えていただきたく、質問しました。

関連するQ&A