プロが教えるわが家の防犯対策術!

下記のように動的URLを静的なURLに置き換えています。

http://www.sample.com/dir/aaa/index.php?content_ …

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リダイレクトさせたい場合、どのように記述すれば良いでしょうか?

A 回答 (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 で受けられます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいたやり方を試したところ、リダイレクト後のURLの最後に?content_id=1が付いてしまいうまくいかなかったのですが、

RewriteRule ^dir/aaa/index\.php$ /aaa_index.content_id_%1.htm? [R=301,L]
と?を付けることでリダイレクトできました。

これで合っているのか不安ですが・・

お礼日時:2013/10/29 17:54

珍しいですね。

普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。

?は正規表現の特殊記号なので、?の前に、\ を書いてください。

ちょっと興味ですが、動的URLに見せかけたい理由って何なんですかね。

この回答への補足

>?は正規表現の特殊記号なので、?の前に、\ を書いてください。

これはすでに試していますが、これではだめなようでしたので質問しました。


>珍しいですね。普通は逆の置き換え(静的→動的)が多いので、例が見つからないのでしょう。

その通りです。なかなかいい例が見つかりません。
しかしできないことではないと思いますので、他の記述方法をご存知の方に教えていただきたく、質問しました。

補足日時:2013/10/27 11:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!