- 締切済み
動的URLから静的URLへの301リダイレクト
下記のように動的URLを静的なURLに置き換えています。 http://www.sample.com/dir/aaa/index.php?content_id=1 ↓ http://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リダイレクトさせたい場合、どのように記述すれば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
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 で受けられます。
- notnot
- ベストアンサー率47% (4900/10358)
珍しいですね。普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。 ?は正規表現の特殊記号なので、?の前に、\ を書いてください。 ちょっと興味ですが、動的URLに見せかけたい理由って何なんですかね。
補足
>?は正規表現の特殊記号なので、?の前に、\ を書いてください。 これはすでに試していますが、これではだめなようでしたので質問しました。 >珍しいですね。普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。 その通りです。なかなかいい例が見つかりません。 しかしできないことではないと思いますので、他の記述方法をご存知の方に教えていただきたく、質問しました。
お礼
ありがとうございます。 教えていただいたやり方を試したところ、リダイレクト後のURLの最後に?content_id=1が付いてしまいうまくいかなかったのですが、 RewriteRule ^dir/aaa/index\.php$ /aaa_index.content_id_%1.htm? [R=301,L] と?を付けることでリダイレクトできました。 これで合っているのか不安ですが・・