301 リダイレクト


.htaccessで
Webの解説に有った通りやってみましたが、うまく行きません。

RewriteRule ^/ http://www.example.com/qanda/\.html$ http://www.example.com/10/qanda/ [R=301,L]

どこが間違っているのでしょう?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/17 15:25:03

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

RewriteEngine On
RewriteRule ^qanda/(.*)$ http://www.exmple.com/10/qanda/$1 [R=301,L]

元の側でwww.exmple.comなどはいりません。
なぜならhtaccessが機能している時点ですでにwww.exmple.comの中にいるからです。

htmlの前に何らかの言葉が入っている場合もあるはずですから\.htmlは.*\.htmlとしますが、
実際には画像などもあるはずですから回答では .* として何か書いてあれば(書いてなくても)すべて飛ばすという形にしています。

$1 は (括弧)の中身をそのまま引き継ぎます。
.* は 何かの文字(ただし何も含まない場合もある)という意味なので、
/qanda/a.html であれば www.exmple.com/10/qanda/a.html になります。
/qanda/ であれば www.exmple.com/10/qanda/ になります。

その他の回答0件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

RewriteEngine On
RewriteRule ^qanda/(.*)$ http://www.exmple.com/10/qanda/$1 [R=301,L]

元の側でwww.exmple.comなどはいりません。
なぜならhtaccessが機能している時点ですでにwww.exmple.comの中にいるからです。

htmlの前に何らかの言葉が入っている場合もあるはずですから\.htmlは.*\.htmlとしますが、
実際には画像などもあるはずですから回答では .* として何か書いてあれば(書いてなくても)すべて飛ばすという形にしています。

$1 は (括弧)の中身をそのまま引き継ぎます。
.* は 何かの文字(ただし何も含まない場合もある)という意味なので、
/qanda/a.html であれば www.exmple.com/10/qanda/a.html になります。
/qanda/ であれば www.exmple.com/10/qanda/ になります。

id:sato0127

質問文を編集しました。詳細はこちら

  • id:sato0127
    佐藤 繁 2013/03/11 08:16:44
    回答者様

    old.pageの部分は、httpから書かないで「末尾の問題ページ」だけを書く事は分かりました。
    で、さっそく直してみましたが、依然作動しません。

    追、urlの例は直しました。

    更なるアドバイスをお待ちしております。
  • id:sato0127
    佐藤 繁 2013/03/11 08:35:18
    現在、

    RewriteRule ^/qanda/(.*)$ http://www.exmple.com/10/qanda/$1 [R=301,L]

    と書き直しました。

    しかし動作しません。よろしくお願い申し上げます。
  • id:sato0127
    佐藤 繁 2013/03/11 10:11:33

    うぃんど 様
    お手数掛けております。

    .htaccessの中をてっとりばやく、画像で見て頂きます。
    http://www.presen-cobo.com/rakugaki/situmon.jpg

    * 今回以外の指示は、現在
      エラーページ案内も、他urlからの引っ越しも、問題なく動作しております。

    * RewriteEngine On は、
      ご指示通り今回新たに描きました。

    * 当方はMac使用で、テキストで書いていますが今まで通り問題とは思えませんし・・。

    お手数掛けておりますが、どうかよろしくお願い申し上げます。

  • id:sato0127
    佐藤 繁 2013/03/11 10:46:41
    うぃんど様

    RewriteEngine On
    のすぐ下に移しましたが、やはり動作しません。
    それと、さっき問題なくurl間の301引っ越し出来ていたものができなくなっており、エラーページ案内も動作しなくなっています。
    url間の転送は、もう一つ「リフレッシュ」というのが作用しているのかもしれませんが、反応は遅い様に感じました。

    どうなってるんでしょう?素人にはまったく分かりません。
    百々よろしくお願い致します。

    追伸、プロフェールに内容を書き込みましたが、こういうとこでは消した方が良いでしょうか?

  • id:sato0127
    佐藤 繁 2013/03/11 16:46:54
    プロフィールは消しました。

    素性が判らないものに教えたく無いだろうという事から、書いてみましたが・・。

    この.htaccess ファイルというのは、
    以前エラーページ案内を教わった時に、ファイルの一番上に持って来たら、それ迄見えかった案内ページが、見える様になった記憶が有ります。
    どこの行に書くかで効果が違う様です。微妙でむずかしい。


  • id:sato0127
    佐藤 繁 2013/03/11 18:39:12
    うぃんど様

    お手数掛けております。
    1日無駄なおつきあいをさせて申し訳ありません。

    RewriteRule ^qanda/(.*)$ http://www.exmple.com/10/qanda/$1 [R=301,L]

    やってみましたが、変化は有りません。
    それとどういう訳だか.htaccess ファイル全てが昨日しなくなってしまいました。
    保存しておいた昨日迄の.htaccess ファイルと差し替えても機能しません。

    暫く、様子見になるのかなあ・・。
  • id:windofjuly
    うぃんど 2013/03/11 18:56:05
    >保存しておいた昨日迄の.htaccess ファイルと差し替えても機能しません。

    .htaccessファイルを置き換えたあとで、キャッシュクリアのために、
    ブラウザ側のスーパーリロードが必要な場合がありますが…行ってます?

    スーパーリロードはブラウザによって少し違いますが、例えば、
    Ctrl + F5 や Ctrl + Shift + R などです。
  • id:sato0127
    佐藤 繁 2013/03/11 19:23:08
    ういんど様

    出来ました!! 出来ました!!

    原因はキャッシュを消したからかどうか判りませんが、
    htaccessをアップするとhtaccess.txtになります。つまり拡張子が付いたままでした。
    それを「ドットhtaccess.txt」に書き換えてましたが、.txtを取ったら機能しました。
    まさにド素人の浅知恵でした。

    1日つまらない事で無駄にしてしまって誠に申し訳ありませんでした。



  • id:windofjuly
    うぃんど 2013/03/11 19:43:19
    よかったです。

    偶然あとから見る人のために不要なコメントは消しました。
  • id:sato0127
    佐藤 繁 2013/03/11 20:15:49
    ういんど様

    いま、.htaccessファイルで他の沢山のページを転送の設定にしたら、またサーバ-がおかしくなったので、一旦.htaccessファイルを消しました。

    しかし、だいたいの問題点が把握出来ましたので、後日又試したいと思います。
    一旦は、機能した訳ですので、ホッとしました。
    転送設定は10個程度まででしょうか?もう少し行けますか?

    今日は、ド素人の誠につまらない事におつきあい頂きまして本当に有り難うございました。
    感謝しております。

  • id:windofjuly
    うぃんど 2013/03/11 21:02:04
    携帯電話向けのサイトなどでは、
    キャリアや機種毎に飛ばしたりしてますから10個で限界ってことはないですよ。

    動かないとしたら記述した順番の問題だと思います。

    [R=301,L] の L は Last の意味で、
    転送条件に合致すれば以後の記述はすべて無視されます。だから順番が大事になります。


    以後の記述はすべて無視される件について、動作を追ってみますと以下のような具合です。

    仮に http://exmple.com/qanda/inde.html でアクセスされたら、
    .htaccessを見てhttp://www.exmple.com/qanda/inde.html へ飛ばされ1回目。

    http://www.exmple.com/qanda/inde.html が呼び出されて、
    また.htaccessを見て今度は http://www.exmple.com/qanda/ へ飛ばされ2回目。

    http://www.exmple.com/qanda/ が呼び出されて、
    また.htaccessを見て今度は http://www.exmple.com/10/qanda/ へ飛ばされ3回目。

    1つのページを表示するために最大で3回の呼び出しでやっとこさ目的地です。

    リライトは恥ずかしながら何年経ってもトライアンドエラーの繰り返しです(笑)
    今回はひとまず、ここで失礼します。
  • id:sato0127
    佐藤 繁 2013/03/12 08:22:22
    うぃんど様

    [R=301,L] の L は Last の意味で、
    転送条件に合致すれば以後の記述はすべて無視されます。だから順番が大事になります。

    そうなんですか、知らなかった。いやなんにも知らないんですが・・。

    昨日は、大変お世話になりました。有り難うございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません