htaccessでリダイレクトする方法とは?

このQ&Aのポイント
  • htaccessを使用して、URLのリダイレクトを行いたい場合は、RedirectPermanentディレクティブを使用します。
  • ただし、リダイレクトが正しく実行されない場合は、RewriteEngineディレクティブを追加してRewriteRuleを使用する方法もあります。
  • リダイレクト先のURLに引数が残ってしまう問題が発生する場合は、RewriteRuleに [QSD] フラグを追加して引数を削除することができます。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPでやってみては? <? if($_GET["s"]=="sample") header("Location:ttp://www.◆◆◆"); ?>

hukazuo
質問者

お礼

ありがとうございました。 とりあえずPHPで対処しました。

関連するQ&A

  • .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
  • htaccessでmod_rewrite

    htaccessに下記のように記述しました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?p=$1 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2&y=$3 [L] RewriteRule ^sample/test/([0-9A-Za-z_]+)/$ sample/test.php?id=$1 [L] すると 「http://www.○○○.jp/index.php?p=●」 は 「http://www.○○○.jp/●/」 「http://www.○○○.jp/index.php?p=●&m=△」 は 「http://www.○○○.jp/●/△/」 「http://www.○○○.jp/index.php?p=●&m=△&y=■」 は 「http://www.○○○.jp/●/△/■」 でアクセスできました。 が、 「http://www.○○○.jp/sample/test.php?id=★」 は 「http://www.○○○.jp/sample/test/★/」 でアクセスできません。 おそらく、 「http://www.○○○.jp/sample/test/★/」を 「http://www.○○○.jp/index.php?p=sample&m=test&y=★」 として認識しているためだと思いますが、 対策がわかりません。 このような場合は、どう対処すればよいのでしょうか。

    • ベストアンサー
    • PHP
  • htaccessでRewiteRule

    ホームページ移転に伴い、htaccessにて301リダイレクト処理をしようと思い、下記の通り記述しました。 RewriteEngine On RewriteRule ^test/sample.php?flg=1&page=ex http://www.sample.jp/ex/ [R=301] や RewriteRule ^test/sample.php?flg=1&page=(.*) http://www.sample.jp/$1/ [R=301] としても、転送されません。 下記のようにするとsample.phpにアクセスした場合転送されます。 RewriteRule ^test/sample.php http://www.sample.jp/ex/ [R=301] 引数で転送先を変えたいのですが、どのようにしたらいいでしょうか。

  • CentOSでhtaccessを使用してmod_rewrite

    CentOSで、htaccessを使用してmod_rewriteを利用したいのですが、いまいちどうしたらいいのかがわかりません。 動的URLを静的URLに変換したく、 htaccessに RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] と書きこみました。 すると404エラーがでます。 試しに #RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] とコメントアウトしたところ、通常に表示されました。 RewiteEngine on が何かしらの影響を与えていると思うのですが、 対策がよくわからないので質問いたしました。 ちなみにhttpd.confの設定は完了しています。 LoadModule rewrite_module modules/mod_rewrite.so と記述。

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

  • .htaccessでの301リダイレクトについて

    .htaccessでの301リダイレクトについて教えてください。 1つのサイトを閉鎖し新しいサイトと一緒にしたいと思っています。 .htaccessで301リダイレクトを行うと思い 下記のような記述を行いましたが上の4つはリダイレクトされますが 下の2つがリダイレクトされません。 色々と試してはいますがどう直せばいいのか分からず困っています。 RewriteRule ^whatis.php$ https://hoge.jp/whatis.php [R=301,L] RewriteRule ^help/$ https://hoge.jp/faq.php [R=301,L] RewriteRule ^category/$ https://hoge.jp/category.php [R=301,L] RewriteRule ^inquiry/$ https://hoge.jp/inquiry/ [R=301,L] RewriteRule ^category/details.php?category=aaaaa$ https://hoge.jp/category/?category=aaaaa [R=301,L] RewriteRule ^category2/?category=aaaaa$ https://hoge.jp/category/search.php?category=aaaaa [R=301,L] よろしくお願い致します。

  • .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 リダイレクトについて教えてください。 今まで、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
  • .htaccessのリダイレクトの書き方

    .htaccessのリダイレクト処理で http://sample.com/index.phpにpost情報込みでアクセスがあった場合、 「www統一」 「index.phpなし」 「index.phpなしアドレスにリダイレクトされた場合もpostの値を取得できる」 という条件を満たすコードはどのようにすれば良いのでしょうか? 「www統一」や「index.phpなし」は説明サイトも多いので可能なのですが、リダイレクト後のURLでもpostの情報を取得する方法がわかりません。 どうそよろしくお願いします。

    • ベストアンサー
    • HTML
  • .htaccess の RewriteRule で、引数が10個以上あ

    .htaccess の RewriteRule で、引数が10個以上ある場合の書式について .htaccess に、下記のように記述をしています。 長ったらしいですが、要するに引数を16個渡したいのです。 RewriteRule ^example_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+)_([0-9A-Za-z\-]+).html$ example.php?VAR01=$1&VAR02=$2&VAR03=$3&VAR04=$4&VAR05=$5&VAR06=$6&VAR07=$7&VAR08=$8&VAR09=$9&VAR10=$10&VAR11=$11&VAR12=$12&VAR13=$13&VAR14=$14&VAR15=$15&VAR16=$16 ですが、こう書くと、例えば「VAR16=$16」の「$16」は「$1 と "6"(文字列としての6) を連結したもの」と解釈されてしまうらしく、うまく表現できません。 10個以上の引数を渡したい場合、どう記述すれば良いでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう