.htaccessの301リダイレクト方法

このQ&Aのポイント
  • さくらインターネットの無料証明を使いHTTPSに切り替えられるサービスが提供されていますが、個別に.htaccessを設定する必要があります。
  • 以下は.htaccessの例です。設定ファイルを作成し、サーバに転送してください。
  • 転送する際は注意事項があります。ファイルはテキストモードまたはアスキーモードで転送し、設置場所にも注意してください。
回答を見る
  • ベストアンサー

「.htaccess」の301リダイレクト方法?

私は趣味でホームページを作っています。 最近、レンタルしているサーバー「さくらインターネット」が無料で使える証明を使いhttpsに切り替えられるサービスを提供し始めました。 只、例えばhttp://・・・・.comからhttps://・・・・.comでも開けるようになっても、「.htaccess」を使っての301リダイレクトは個人で設定しなければいけないようです。 さくらインターネットのサイトには下記のように書かれていて、そのままコピーしてFFFTPであげたのですが、エラーが生じてサイトを開けなくなりました。 「.htaccess」を削除したら、元通りサイトが表示されました。 http://・・・・.comからhttps://・・・・.comへ全ての下層のページをhttpsへと301リダイレクトしたいのですがどのように設定したら良いでしょうか? 詳しく教えて頂けたら幸いで御座います。 さくらインターネットのサイトには下記のように書かれております。 ::::::: WordPressを利用せずサイトを作成/公開されている場合 ~SNI SSLを利用~ 設定ファイルの作成 SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> サーバへ設定ファイルを設置 作成した設定ファイルをサーバへ転送します。 転送する際は以下の点にご注意ください。 ファイルは、「テキストモード」または「アスキーモード」で転送してください。 ファイルの設置場所に注意ください サーバへ設置したファイルの名前を「.htaccess」に変更する :::::::

  • HTML
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
回答No.2

さくらのリダイレクトは全体的にクセが強いため、順を追って解決していく必要があるかと思います。 ◆【無料SSL】サーバコントロールパネルからの導入手順 – さくらのサポート情報  https://help.sakura.ad.jp/hc/ja/articles/115000136822 まずは、HTTPSの設定からです。ちゃんと無料のSSL証明書(Let's Encrypt)は取得できていますか? とりあえず《.htaccess》も何も設定しない状態で、  http://………….com/  https://………….com/ の両方にアクセスできるかどうかを確認してみてください。 ちゃんとアクセスできるのであれば、いよいよ《.htaccess》です。具体的には、httpでアクセスされたらhttpsに自動転送されるように設定します。これによって、事実上httpでのアクセスを禁止し、すべてのアクセスをhttps側に振りわけるわけです。 別に設定しなくてもhttpsでのアクセス自体はできるものの、すべてがhttps側に転送されることで安心感も高まりますし、できることならやっておいたほうがいいともいえます。なにより、うまく自動転送されてブラウザに緑の鍵マークが表示されると、すごく本格的なホームページに見えてかっこいいです(笑)。 ◆.htaccessによるアクセス制御 – さくらのサポート情報  https://help.sakura.ad.jp/hc/ja/articles/206054622#ac09 それで、記述そのものはご質問に書かれているとおりで合っています。ふつうに考えれば失敗せずに行けるはずですが、もしうまくいかないのであれば、  ・ちょっとした記述ミスに注意(コピーすると安心)  ・</IfModule>の下に改行を一行入れる  ・文字コードはUTF-8  ・ファイル名は《.htaccess》  ・ドキュメントルート直下《/home/ユーザー名/www》にアップロード  ・パーミッションは604 などといったことに気をつけながら、再挑戦してみてください。 私はWinSCP派なのでFFFTPについては何ともいえないものの、もしFFFTPがうまく動かないようであれば、代わりに《ファイルマネージャー》を使う方法もあります。レンタルサーバーのコントロールパネルから利用できますので、どうしてもダメなら使ってみてください。右クリック⇒表示アドレスへの操作⇒ファイル作成とたどると、《.htaccess》も作成できます。 ◆サーバコントロールパネル - ファイルマネージャ  https://secure.sakura.ad.jp/rscontrol/rs/fileman2/ なお、絶対パスや相対パスについては、今回のご質問とは直接的には無関係だと思います。たとえば、ホームページ内に  <img src="http://………….com/img/sample.jpg" alt="" /> みたいな記述があった場合にうまく表示できなかったりするので、その場合はhttpの部分を手作業で修正してくださいということです。  <img src="https://………….com/img/sample.jpg" alt="" />  <img src="//………….com/img/sample.jpg" alt="" />  <img src="/img/sample.jpg" alt="" />  <img src="../img/sample.jpg" alt="" /> いろいろな方法がありますが、とりあえずこんなのが思い浮かびました。

その他の回答 (1)

  • 9133313
  • ベストアンサー率19% (267/1346)
回答No.1

http://ad-library.jp/htaccess/ https://digital-marketing.jp/creative/site-renewal-301-redirect/ https://htaccess.cman.jp/ この辺が参考になりませんか? これまで使用してきたサイトの変更も必要で、サイト内の参照法を、相対パスから絶対パスに変更する必要があるみたいです。 万が一、相対パス、絶対パスの違いが判らい場合、httpsの導入については、再検討が必要かと思います。 失敗しながらも、上手くいくと良いですね^^

関連するQ&A

  • .htaccessでリダイレクトしたいです@さくら

    .htaccessでwwwなしのサイトにリダイレクトをかけたいのですが、うまくいきません。 色んな方法がサイトにありそれを試しているのですが、 一瞬テストでうまくいったと思ったのですが、それ以降うまくいかなくなってしまいました。 使用しているプロバイダはさくらインターネットです。 今までに試したコマンドは下記です。 --------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.hoge\.com)(:80)? RewriteRule ^(.*) http://hoge.com/$1 [R=301,L] </IfModule> --------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} www¥.hoge¥.com RewriteRule .* http://hoge.com%{REQUEST_URI} [R=301,L] --------------------------- .htaccess を設置しているディレクトリは /home/hoge/www になります。 ぜひ教えていただけないでしょうか。よろしくお願いいたします。 また、.htaccessは変更してどのくらいで反映されるのか、補足的に教えていただけると助かります。 以上、よろしくお願いいたします。

  • SSLのリダイレクトについて

    sslのリダイレクトの作業を急いでやらないといけないのですが、sslに関しては全くの初心者なので調べながらいろいろやってみましたがどうしてもうまくいかず困っています。。 Wordpressでサイトを作成していてドメイン直下の.htaccessにリダイレクトの記述をしています。 サーバーはGMOのiCLUSTAで、sslはジオトラストです。 http://○○○.jp/ にアクセスした場合に、 https://ssl.○○○.jp/ へリダイレクトされるようにしたいです。 .htaccessの記述内容です # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://ssl.○○○.jp/$1 [R=301,L] この記述をしていますが、リダイレクトされたりされなかったりの不安定な状態です。 されないことの方が多いのでどの条件で動いているのかがわかりません。 RewriteCond %{HTTPS} on を、 RewriteCond %{HTTPS} off にするとリダイレクトされますが、処理がループされていますという表示が出てしまいます。 どのような記述をすればうまくいくのでしょうか?

  • htaccess リダイレクト機能の利用法を教えてください。。

    お世話になっております。 仮のURLで質問させて頂きます。 http://www.pine.co.jp/ma/index.htmlにアクセスがあった場合に、 https://wadax55.wadax.ne.jp/~pine-co-jp/ma/index.html にリダイレクトされるようにしたいのです。 そこでインターネットにありました以下文章を読んだのですが、よくわからないのです・・。お手数ですが教えてくださいますようお願い致します。 .htaccessでは、ディレクトリー構造そのままにリダイレクトさせることも可能です。 Redirect permanent /test/ http://www.shtml.jp/htaccess/ とすれば、http://www.shtml.jp/test/以下にあるファイルへのアクセスがあった場合には、リダイレクトされます。例えば、http://www.shtml.jp/test/basic.htmlへのアクセスは、http://www.shtml.jp/htaccess/basic.htmlへリダイレクトされます。 自分でこうかな?と思うやり方をトライしてみたものの悉く失敗し、めげています…。図々しいのですが、、、つまりどのように.htaccessファイルに記述し、それをどこに設置すればいいのでしょうか・・・?ファイルもだけれどもhtaccessというフォルダが必要なのか??というレベルです。 申し訳ございません。。。 教えて頂けますと大変助かります。

  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

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

    htmlコーディングの知識は多少あるのですが、サーバーの設定については全くの初心者です。 .htaccessリダイレクトの方法がわからないのでお教えください。 旧サイトが「https://www.sample.com/aaa/bbb/」にあったのですが、新しいサイトを「https://www.sample.com/ccc/」に作成しました。新サイトと旧サイトのディレクトリの構成はまったく異なります。 旧サイト全体に301リダイレクトを設定して旧サイトのどのページにアクセスしても新サイトのTOPページに移動させたいのですが、.htaccessの書き方がわかりません。 Googleでいろいろ検索し、下記のように記述した.htaccessファイルをbbbディレクトリに格納してみましたが、うまくいきませんでした。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^aaa/bbb/(.*) /ccc/$1 [R=301,L] </IfModule> また、以下ではInternal Server Errorになりました。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.sample.com)(:80)? [NC] Redirect permanent /aaa/bbb/ RewriteRule ^(.*) https://www.sample.com/ccc/$1 [R=301,L] </IfModule> アドバイスをいただけないでしょうか。 よろしくお願いいたします。

  • 301リダイレクトの記述方法に関して

    サイトリニューアル後の301リダイレクトに関してご質問させて頂きます。 旧サイト URL : http://www.hoge.co.jp/aaa サーバーのディレクトリ : www/aaa 新サイト(全ページssl対応) URL : https://www.hoge.co.jp/aaa/bbb サーバーのディレクトリ : ssl/aaa/bbb サーバー:ファーストサーバ ------------------------------------------------------------------------- 上記の状況で旧サイトのディレクトリwww/aaaより下のファイルにアクセスしてきたものを 全て新サイトのトップページ(https://www.hoge.co.jp/aaa/bbb/index.php)へ 「.htaccess」を使用してリダイレクトしたいのですが、どの様に記述すれば良いのか 分かりません。 調べて「.htaccess」を作成しサーバーへアップロードしてみてもインターネットエラー500に なってしまいます。 この様な場合の「.htaccess」の記述方法や設置場所をご教授頂きますようお願い申し上げます。

  • リダイレクトのhtaccessを置くと403エラー

    perlで書いたCGIファイルがあるのですが、スマホ用のリダイレクトhtaccessファイルをトップディレクトリに置いた所、CGIのページが403エラーになってしまいました。 .htaccessファイルを外すと正常に表示するので、原因は.htaccessなのですが、理由が思い当たりません。 CGIのソースは出せないですが、お問い合せフォーム用のCGIです。 何かお気づきの点がありましたら助言お願い致します。 ● .htaccess(トップディレクトリに設置) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / </IfModule> ● ディレクトリ構造 /index.html・・・トップページ /.htaccess・・・上記内容 /contact/all/index.cgi・・・403エラーになるCGI /contact/all/.htaccess・・・「Options ExecCGI」のみ記述 /sp/・・・スマホ用のリダイレクト先ディレクトリ(以下略)

  • ホームページのリダイレクト失敗で無限ループへ

    .htaccess でサイトの引越しを試みましたが失敗して無限ループに入ってしまい、サーバ内のホームページへアクセスすることができなくなりました。 いろいろ調べてみてもどうしてもわからないので質問させてもらっています。わかる方がいましたら解決方法を教えていただきたいです。よろしくお願いします。 さくらインターネットのサーバ内に2つのホームページをそれぞれのドメインで設置しています。ドメイン名は例、( )内は(サーバ内ディレクトリ)です。 ドメイン1:example1.com (home/example/www)  ドメイン2:example2.com (home/example/www/NEW) ドメイン1の階層を一つ下に移動したかったのでOLDというフォルダを作り、www 階層のドメイン1関連ファイルを全てOLDに移動し、.htacccess をwwwの階層に設置しました。記述内容は以下です。      RewriteEngine on      RewriteRule (.*) http://www.example2.com/$1 [R=301,L] htaccess のリダイレクトの書き方をネットで検索し、なんとなくマネて書きました。移動したいサイトはドメイン1だったのですが、間違ってドメイン2を記述内に書き込んでしまいサーバへアップロードしました。ドメイン1サイトへアクセスすると、 「ページの自動転送設定が正しくありません。このアドレスへのリクエストに対するサーバの自動転送設定がループしています。」 と表示がでて、アドレスバーには、www.example2.com/NEW/NEW/NEW/NEW/NEW/NEW/NEW/NEW/ と表示されました。慌てて htaccess をサーバから削除して、ドメイン1関連ファイルを全て元の位置に戻しましたが、アクセスしても同じようにループに入ったアドレスが表示されるようになりました。ドメイン2へアクセスして同じループに入ってしまいます。 どうしたらこのループを抜けれるのでしょうか? ドメイン1は サーバ内の home/example/www/OLD、ドメイン2はそのまま(home/example/www/NEW)へ移動したいです。どう htaccessに記述すれば、(www.)example1.comへアクセスした際にNEWフォルダ内のindex.html へリダイレクトをかけれますか?(www.)example2.comへのアクセスができるようになるためにはどうしたら良いでしょうか? ちなみにサイトの移動はhtmlファイルが多いので .htaccess で行いたいです。 本当にどうすれば良いかわからず困っています。 わかる方がいましたら、宜しくお願い致します。

    • ベストアンサー
    • HTML
  • クローラーがhtaccessでリダイレクト

    現在、WEBサイトを作成しており、当該サイトは、レンタルサーバーを借りる際にhttpのドメインも一緒に新規で取得しました。 ただ、その後、全ページ https で作成していくこととなり、各リンクは全てhttpsでつながっています。 検索エンジンからTOPに入ってくるときに、httpならば、httpsにリダイレクトするように、htaccessに記述していました。 しかし、昨日、googleにサイト登録して、本日まで待ってみたところ、ウェブマスターツールの 「クローラーエラー」と「検索クエリ」はまだ反映されていませんでした。 以前は単純なhttpのサイトですと、1日程度で何かしら反映されていたと思うのですが、 やはりなにか設定が足りないのか、それともクローラーは、htaccessのリダイレクトを読み込まないのでしょうか。 どなたか体験されたことのある方がいらっしゃいましたら、教えてください。 よろしくお願い致します。

  • .htaccessを用いて.cgiを.htmlにリダイレクトしたい

    .htaccessを用いて.cgiを.htmlにリダイレクトしたい 現在webサイトで以下のようなURLが表示される掲示板を設置しています。 http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=32 http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=500 (最後の数字は10から500くらいまであります) これを過去ログにするため、html化しました。 http://hoge.com/log1/32.html http://hoge.com/log1/500.html しかし以下のような.htaccessを、/bbs1/以下に設置しても、htmlに転送することができません。 RedirectPermanent /bbs1/bbs.cgi?nd=dd&parent=32 "http://hoge.com/log1/32.html" ちなみに以下のようなhtmlファイル同士の転送はできます。 RedirectPermanent /bbs1/index.html "http://hoge.com/log1/index.html" 301リダイレクトでcgiをhtmlに転送することはできないのでしょうか? もしおわかりになりましたらご教授いただけますと大変有り難いです。

    • ベストアンサー
    • CGI

専門家に質問してみよう