Skip to main content
tsutetoka
Participating Frequently
July 14, 2021
Question

301リダイレクト の方法

  • July 14, 2021
  • 7 replies
  • 1321 views

ホームページを作成し、アドレスを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」をローカルファイルとリモートサーバーから削除したところ、手をつける前の状態には戻れました。私の何がいけなかったのでしょうか?ご指導いただけたら幸いです。

 

 

 

 

 

 

    This topic has been closed for replies.

    7 replies

    Ten A
    Community Expert
    Community Expert
    July 15, 2021

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

    tsutetoka
    tsutetokaAuthor
    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
    tsutetokaAuthor
    Participating Frequently
    July 15, 2021

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

    早速試してみます。

    ありがとうございます。

    tsutetoka
    tsutetokaAuthor
    Participating Frequently
    July 15, 2021

    試してみたところ

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator.

    という表記が出ました。私の作業の何かが間違っているようです。

    私はまず教えていただいた文をコピペでテキストファイルに持っていきます。

    そのときファイルのタイトルはa.htaccess.txtとしております。

    このファイルをドリームウィーバー でローカルファイルと繋がっているフォルダの中に入れます。

    そして「サイトで表示」を開き、ローカルファイルの中にa.htaccess.txtが現れるようにしたら、

    「a」と「.txt」を消して「.htaccess」という状態にしました。

    この状態にしてから「.htaccess」を選択してプットしてリモートサーバーのほうに「.htaccess」が現われるようにします。

    その後、ホームページの更新をするときと同じような作業をします。

    そうしてサファリやFirefoxのお気に入りから、作業したホームページを開いてみたところ、冒頭の

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator.

    が現れました。

    サーバー管理者連絡をとあります。これまでの作業をレンタルサーバーHSに伝えることが、

    次なる作業になるのだろうかと思案してます。

    いろいろご教授いただき、みなさまにはほんと感謝いたしております。

     

    Ten A
    Community Expert
    Community Expert
    July 14, 2021

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

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

    tsutetoka
    tsutetokaAuthor
    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
    tsutetokaAuthor
    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
    tsutetokaAuthor
    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
    tsutetokaAuthor
    Participating Frequently
    July 14, 2021

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