Skip to main content
tsutetoka
Participating Frequently
July 14, 2021
質問

301リダイレクト の方法

  • July 14, 2021
  • 返信数 7.
  • 1390 ビュー

ホームページを作成し、アドレスをhttpからhttpsに変更しました。現状、httpでもhttpsでも、またwwwがありでもなしでもホームページが開きます。ホームページの本を読んでいるとアドレスは一本化しないといけないと書いてあるので、試みているところですがうまくいきません。301リダイレクト という方法で作業を進めることはわかったのですが、一度ローカルファイル表示されるフォルダに.htaccessファイルを入れてプットしてみたところ、ホームページが表示されなくなってしまいました。ちょっとびっくりぽん!でローカルファイルとリモートサーバーから.htaccessを削除したところ、表示されなくなったホームページがふたたび表示されるようにはなりました。そこで可能であれば、私の作業の間違っているところをご指摘いただけたらとってもうれしく思います。

.htaccessファイルはテキストで作成しております。(私はマックでDWを使用しております。)

 

.htaccessの内容は

 

httpからhttpsへ一本化するために以下の3行を入力

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ ○○○○○○○○/$1 [R=301,L]

※○○○○○○○○に一本化したいアドレスを記入

wwwをなしにするために以下の3行を入力

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ ○○○○○○○○/$1 [R=301,L]

※○○○○○○○○に一本化したいアドレスを記入

 

ファイルには下記のようにしました。

 

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ ○○○○○○○○/$1 [R=301,L]

 

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ ○○○○○○○○/$1 [R=301,L]

 

このテキストをローカルファイルに表示されるフォルダの中に入れました。テキストで作成したときは「a.htaccess.txt」というファイル名になっているので、フォルダの中に入れてからaと.txtを消して「.htaccess」と名前を変更しました。

この状態でDWを立ち上げて、「サイトで表示」を開き、.htaccessをプットして更新したら、ホームページそのものが表示されなくなってしまいました。もしかしたらと「.htaccess.txt」でもう一度同じようにしたけど表示されませんでした。そこでこれはたいへんと「.htaccess.txt」と「.htaccess」をローカルファイルとリモートサーバーから削除したところ、手をつける前の状態には戻れました。私の何がいけなかったのでしょうか?ご指導いただけたら幸いです。

 

 

 

 

 

 

    このトピックへの返信は締め切られました。

    返信数 7

    Ten A
    Community Expert
    Community Expert
    July 15, 2021

    えーと、わたしの書いたのが動かないのはそのサービスが.htaccessのディレクティブを拒否する仕様だからです。そのレンタルサーバーでは.htaccessでのリダイレクトはできません。JavaScriptを組み込むなどしてリダイレクトする以外手がないのではないかと思います。

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 15, 2021

    ご指摘ありがとうございます。そのレンタルサーバーでは.htaccessでのリダイレクト はできませんということは、いろいろなサイトをのぞいてみて、どのサイトもすすめる301リダイレクトをすることができないということですね。ちょっとショックです。ちょっと考えてみます。ありがとうございました。

    r360studio Kazue Mori
    Community Expert
    Community Expert
    July 15, 2021

    tsutetoka さん、こんにちは。

     

    @Ten A さんの最初の返信にあったコードを、.htaccessへそのままコピペすればOKで、もしこのコードをご自身のURLへ書き換えていらっしゃったら、それは不要です。


    https://%{HTTP_HOST}%{REQUEST_URI} 
    https://%1%{REQUEST_URI}

    は、お使いのサーバーのURLへ汎用的に置き換えてくれます。

    わたしは↓のように、<IfModule>でくくって使っています。
    ※<IfModule>が要るかどうかは、お使いのサーバーによってもかわるかもしれません。

    ご参考まで。(^_^)

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [L,R=301]
    </IfModule>

     

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 15, 2021

    わお!そうなんですか!!

    早速試してみます。

    ありがとうございます。

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 15, 2021

    サーバーは、「レンタルサーバーHS」をお使いなのですね。
    ※先程は、入れ違いで書き込んでいて、いま知りました。

     

    tsutetoka さんもご覧になっていると思いますが、

    https://www.so-net.ne.jp/option/rentalserver_hs/faq/answer02.html 
    に「.htaccessはご利用可能ですが、ファイル制御に関する表記には対応しておりません。ご利用可能なディレクティブはAuthConfigとLimitのみとさせていただいております。」とあるように、
    「レンタルサーバーHS」では、.htaccessによるリダイレクト(rewrite設定)が許可されていないようです。

     

     

    ---------------
    <余談> ↑のページとは、逆のこと(.htaccessによるリダイレクトができる)と記載されているページもありました。どっちなのかしら?? 一応、レンタルサーバーの管理者の方へ、できるか/できないかを聞いてみてもいいかもしれません。

    ▼SSL証明書| So-net レンタルサーバーHS | サービス一覧 | オプションサービス | So-net
    https://www.so-net.ne.jp/option/rentalserver_hs/option_ssl.html 
    ※「http」から「https」へのリダイレクト設定の項を参照
    ---------------

     

     

    そのため、tsutetoka さんご自身が書いていらっしゃった

    <meta http-equiv=”refresh” content=”0;URL=’https:// ○ ○ ○ ○ ○ ○ ○ ○’”>
    を、ページ毎に埋め込むか、meta refreshを使うか……ぐらいしか思いつきません。

     

    参考:javascriptとmeta refreshのリダイレクト方法とメリットデメリット
    https://wakarukoto.com/?p=24355 

     

    しかしながら、.htaccessファイルを使わないリダイレクトは、Googleからあまり好まれていないので、ベストというよりは、ベターな方法であることも、あわせてお伝えいたします。

    参考:meta refreshとは?転送(リダイレクト)によるSEO効果と設定の注意点
    https://digital-marketing.jp/seo/what-is-meta-refresh/ 


    以上、あまりお役に立てませんでしたが、補足までいたしました。


    ありがとうございます。so-netさんに問い合わせを試みているのですが、どうも電話だけでしか対応していなくてなかなかつながらずにおります。つながったら確認して.htaccessによるリダイレクト ができるのかどうか確認して、その答えをこのページにもご報告いたします。

    Ten A
    Community Expert
    Community Expert
    July 14, 2021

    まずは利用されているサービスの公式ドキュメントを探してみてはどうでしょう。多くのレンタルサーバー業者は基本的な利用方法をヘルプ文書として用意しています。

    また、ユーザーサポートへ問い合わせてみてもいいかもしれません。

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 15, 2021

    so-netのサービスを利用してホームページを開いていたのですが、そのso-netがそのサービスを終了させるということで、代わりのサービスをお聞きしたところ「レンタルサーバーHS」を紹介されたので、そのサーバーを利用しております。レンタルサーバーHSに尋ねるso-netレンタルサーバーHS のFAQを紹介されました。
    この中で該当しそうなのが、

    Q:自分で用意した.htaccessファイルは使用できますか?
    A:.htaccessはご利用可能ですが、ファイル制御に関する表記には対応しておりません。
    ご利用可能なディレクティブはAuthConfigとLimitのみとさせていただいております。ディレクティブに関しては、Apacheの公式サイト等でご確認ください。

    このQ&Aについては、Apacheの公式サイトはまださらっとみただけですが、ホームページをつくることに不慣れな私には、ちょっとたじろいでしまいそうな、よくわからない単語がたくさんちらばっているようにみえたので、「あとにしよ」と思い閉じてしまいました。

    もうひとつのQ&A があり

    Q:リダイレクトの方法を教えてください。
    A:リダイレクトの方法は、様々な方法がございます。参考として、一般的な設定方法を記載いたします。

    ■HTMLの場合
    <HTML>
     <HEAD>
     <TITLE>タイトル</TITLE>
     <META http-equiv="refresh" CONTENT="秒数;URL=" TARGET="_blank">http://ドメイン名">
     </HEAD>
     <BODY>
     ページが変わらない方は<a href="こちら" TARGET="_blank">http://ドメイン名/">こちら</a>
     </BODY>
    </HTML>
    ■PHPの場合
    <?php
     header("HTTP/1.1 301 Moved Permanently");
     header("Location: http://ドメイン名/");
    ?>
    ※「お客さまドメイン名」は設定通知書に記載された、ご利用ドメインに変更して設定をお願いいたします。
    記載した設定方法は、参考例となりますので、お客さまホームページでの動作保障等は、行っておりません。

     

    このQ&Aについてはいまホームページに書き込み、試しているところです。

    たまねぎまーくん
    Inspiring
    July 14, 2021

    [301 リダイレクト]あたりで検索し、お手本として記述してくれているタグをテキストファイルにコピー、

    ご自身のURL部分だけ変更。

     

    上記のような手順で作業していらっしゃいますか?

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 15, 2021

    はい、URLを「https://○○○.com」とすると

    RewriteEngine on

    RewriteCond %{HTTPS} off

    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{https://○○○.com} [R=301,L]

    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

    RewriteRule ^ http://%1%{https://○○○.com} [L,R=301]

    とした「.htaccess」を作成して試してみました。

     

    .htaccess作成ツールというサイトをみつけまして

    https://www.htaccesseditor.com/#a_redirect

    「wwwあり・なし統一」と「リダイレクト 」を試してみようと今作業をはじめたところですが、

    「リダイレクト 」のサイトパスを入力というところが、なにを入力すればよいのかよくわからないので調べているところです。

     

    みなさんのいろいろなアドバイス、感謝です。

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 14, 2021

    うまくいきませんでした、くやしいです。

    今日はここまでにして、またトライしてみます。

    とりあえずサイトでみつけた

    <meta http-equiv=”refresh” content=”0;URL=’https:// ○ ○ ○ ○ ○ ○ ○ ○”>

    で対応します。

    Ten A
    Community Expert
    Community Expert
    July 14, 2021

    とりあえずひとつずつ潰すのが得策かと思います。一息にやろうとしてエラーが出ると原因の特定が難しくなります。

    Ten A
    Community Expert
    Community Expert
    July 14, 2021

    基本的な所で"https://"と正規表現部分のグルーピングが抜けている点が問題ではないかと思います。
    まとめると以下のようになるかと…

     

     

     

     

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [L,R=301]

     

     

     

    ※ちょっと抜けてたので書き足しました。

     

    tsutetoka
    tsutetoka作成者
    Participating Frequently
    July 14, 2021

    ありがとうございます。もう一度トライしてみます。