• 締切済み

動的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% (4847/10260)
回答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% (4847/10260)
回答No.1

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

keitarou07
質問者

補足

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

関連するQ&A

  • パラメーター付きのURLをリダイレクトしたい

    お世話になります .htaccess でリダイレクトを行いたいのですが、パラメータ付きのURLの為かリダイレクトができません。 .htaccess内の記述↓ redirect 301 /aaa/bbb.php?N=1 http://www.aaa.com/index.html 「?=N1」の部分を取れば問題なくリダイレクトします パラメータ付きのURLはリダイレクト可能でしょうか? よろしくお願いいたします

  • htaccessでリダイレクト

    http://www.○○○/index.php?s=sample というアドレスを http://www.◆◆◆/ にリダイレクトしたいと思っています。 htaccessに下記のように記述しました。 RedirectPermanent /index.php?s=sample http://www.◆◆◆ が、リダイレクトしませんでした。 次に下記のように記述してみました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?s=$1 [L] RedirectPermanent /sample/ http://www.◆◆◆ すると、 http://www.○○○/index.php?s=sample にアクセスすると、リダイレクトはしますが、 リダイレクト先のアドレスが、 http://www.◆◆◆s=sample となり、引数が残ってしまいます。 原因もわからず、どのようにしたらいいかが全くわかりません。 どなかたお教えください。

    • ベストアンサー
    • PHP
  • .htaccessでGET引数をもとにリダイレクト

    http://test.com/ というサイトがあったとして、.htaccessを用い、 http://test.com/123 というアドレスにアクセスした場合、 http://test.com/sample.php?id=123 にリダイレクトし、 http://test.com/m/123 にアクセスした場合は、 http://test.com/m/sample.php?id=123にリダイレクトさせたいと考えています。 リダイレクト後もアドレスバーのURLは http://test.com/123、あるいは http://test.com/m/123のまま維持しているようにしたいです。 id は常に数字のみで、サーバーはロリポップのチカッパプランです。 上の方は RewriteEngine on RewriteRule ^([0-9]+)$ sample.php?id=$1 としたらなんとなくできているようですが、 「m」のほうは「m」ディレクトリ内に RewriteEngine on RewriteBase /m/ RewriteRule /m/([0-9])$ /m/sample.php?id=$1 と置いても404エラーになってしまいます。 どうしたら良いのでしょうか?

    • ベストアンサー
    • HTML
  • .htaccessによりリダイレクトされるサイトの一部だけリダイレクト

    .htaccessによりリダイレクトされるサイトの一部だけリダイレクトされないようにできませんか? ドキュメントルートhome/直下の.htaccessには、下記の記述がされています。 RewriteEngine on RewriteRule .html$ http://www.sample.com/index.php ↑これは、拡張子が.htmlのページを表示しようとしたらwww.sample.com/index.php(TOPページ)へリダイレクトさせるという意味かと思うのですが、 home/webalizer 直下には、自動的に○○○.htmlファイルが生成されるようになっており、 このファイルを開こうとしても、TOPページにリダイレクトされてしまい、 FTP等でダウンロードしてからでないと内容を確認できません。 ルート直下の.htaccess は手を加えたくないので、 home/webalizer直下に、何らかの記述の.htaccessファイルを置くことにより、webalizer内の.htmlファイルだけはリダイレクトせずに開けるようにできないものでしょうか?

    • ベストアンサー
    • PHP
  • 301リダイレクトについて

    aaa.jpとaaa.comというページがあります。 条件はドメインが変わって、複数のそれぞれのページを個別にリダイレクトさせます。 (aaa.jp/~.htmlの複数のページをaaa.com/~.htmlのページに個別にリダイレクト) 以下のhtaccessの記述で間違いないでしょうか? 間違っていた場合正しい記述方法を教えていただければ幸いです。 RewriteEngine on RewriteBase / RewriteRule aaa.jp/123.html http://aaa.com/abc.html [R=301,L] RewriteRule aaa.jp/124.html http://aaa.com/aba.html [R=301,L] 以下 直ぐ上のような複数の記述が続きます。 初心者ですので的外れなことを記載しているかもしれません。 その点はご容赦ください。

    • 締切済み
    • SEO
  • 動的URLから静的URLへのリダイレクト

    htaccessで動的URLを静的URLに301リダイレクトしたいのですが、うまくいきません。 どのように記述すればよいでしょうか? 静的URL同士のリダイレクトしか分からず、困っています。 よろしくお願いします。 http://example.com/yyy.cgi?cate=1&page=1 リダイレクト先 http://example.com/zzz.htm

  • .htaccessで動的URLを静的化

    動的URLを静的化したいと考えています。 ネットで調べるとよくあるサンプルは RewriteRule ^/dir/([0-9A-Za-z]+)/([0-9A-Za-z]+)$ /dir/index.php?a=$1&b=$2 という風に「静的なURLにアクセスして、内部ではパラメータ付きのURLでの処理をさせる」 というパターンが多いのですが、私がやりたいのは逆で「動的URLにアクセスがあれば静的URLにリダイレクトをさせる」というものです。 理由は、 ・すでにサイトがある程度できあがっていて、既存のURLもある程度Googleにインデックスされている ・パラメータの組み合わせパターンが色々あるため上記のようなルールで対応できない などです。 そこで http://xxx.com/dir/index.php?a=01&b=02 や http://xxx.com/dir/index.php?b=02&c=03&x=999 といった動的URLを http://xxx.com/dir/a-01/b-02/ http://xxx.com/dir/b-02/c-03/x-999/ RewriteRuleを使ってこのような形で一旦301リダイレクトさせ、これをPHPの内部処理でパラメータ付きURLに戻すことによって既存のロジックを生かしたままURLを静的化できないかと考えています。 RewriteRuleの記述を色々書き換えて試してみたのですが、どうしてもやりたいようなURLの変換ができません。 どのように記述すればよいか、ご教授下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • POSTでリダイレクト

    リダイレクトモジュールをPHPで作成し、その中で JavaScriptを使用し、POSTでリダイレクト処理を行う際の JavaScriptのロジック方法をお願いします。 下記のurl_module.phpがPHPモジュールにあたり その中でクッキーの値や、DBからの値を取得して パラメータを生成し、あるページ先にPostで渡します。 http://www.test.com/url_module.php?ID=888 渡す先↓↓↓↓↓↓↓↓↓↓↓↓↓ http://www.test1.com/index.php (POSTで渡す値:ID=888、DB=AAA、NAME=ORAG) よろしくお願いいたします。

  • 301リダイレクトについて

    301リダイレクトについて調べているのですが全く動作しません。 やりたいことは サブディレクトリのページをサブドメインに移動させたいのです。 例: http://www.hoge.com/fuga/index.html/ 上記の/fuga/より一段下の階層を http://piyo.hoge.com/index.html/ に移動させたいです。 色々なサイトを参考にし、 RewriteEngine On RewriteBase /fuga/ RewriteRule ^index\.php$ – [R=301,L] RewriteRule . /fuga/index.php [R=301,L] Redirect 301 /fuga/ http://piyo.hoge.com/index.html/ や RewriteEngine on RewriteRule ^fuga/(.*)$ http://piyo.hoge.com/index.html/$1 [R=301,L] など色々試してみましたが全く動作せず、また初心者のため理解できずに困っています。 どなたかお力を貸していただけたら嬉しいです。 よろしくお願い致します。 使用しているサーバーはhetemlです。

    • ベストアンサー
    • PHP
  • htaccessのリダイレクト記述

    .htaccess リダイレクトについて教えてください。 今まで、WordPressをサブドメインで使っていましたが、新しいドメインに移転します。 今までのURLは、http://old.com/wp/ 新しいURLは、http://new.com となります。 それぞれの記事が検索エンジンに掲載されいますので、それぞれの記事がリダイレクトでそれぞれの記事を表示することが希望です。下記の記述で正しいでしょうか? RewriteEngine on RewriteBase /old.com/wp/ RewriteRule ^$ http://new.com/ [R=301,L] RewriteRule ^(.+)$ http://new.com/$1 [R=301,L] 宜しくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう