質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

1回答

1856閲覧

.htaccessでの描き方

hyksm

総合スコア174

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

1クリップ

投稿2017/09/14 06:12

編集2022/01/12 10:55

.htaccessでの描き方がうまくいきません

<Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?hoge\.sakura\.ne\.jp$ [NC] RewriteRule .* https://www.hoge.com%{REQUEST_URI} [R=301,L] DirectoryIndex index.html ErrorDocument 404 /404.html order deny,allow

これを
SSL化したことで
http://へのアクセスをhttps://にしたい
・www.をありで統一したい
のですが

<Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes ErrorDocument 404 404.html RewriteEngine on RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC] RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] DirectoryIndex index.html Redirect permanent http://www.hoge.com/ https://www.hoge.com/ order deny,allow

にしてもうまくいきません(wwwなしでもアクセスできたりhttpでもアクセスできたり)

上記設定で何か間違えてますでしょうか?

詳しい方ご教示ください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

showkit

2017/09/14 06:46

ブラウザには何を使用していますか? ブラウザによっては 実際に通信しているものを 省略した URL で表示するものもあります。 アクセスしている URL は Apache のログで確認していますか?
hyksm

2017/09/14 06:54

ブラウザはchrome、IEで確認しました >アクセスしている URL は Apache のログで確認していますか?これは確認方法がわからないのでしてません。
showkit

2017/09/14 06:58

Apacheを実行しているOSによってログの出力場所は異なります。また httpd.conf によって出力先を変えることができます。OSは何ですか? httpd.confは編集しましたか?
hyksm

2017/09/14 07:01

編集はしてません。ちなみにさくらのサーバです。
guest

回答1

0

リライトの設定と他の設定が混ざっているので下記の関係ある部分のみについて回答いたします。さくらサーバーだという部分を読み飛ばしていましたので修正しました。

さくらサーバーの場合、SSLは80番ポートをProxyしているのでSSLも80番ポートです。(443ではありません)
また、SSLが正常に成功すると%{HTTP:X-Sakura-Forwarded-For}にクライアントのIPアドレスが入り、SSL接続でない場合は「空」になります。

apache

1RewriteEngine on 2RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC] 3RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] 4Redirect permanent http://www.hoge.com/ https://www.hoge.com/

↓↓↓↓ 下記のようにしてみてはいかがでしょうか。↓↓↓↓

apache

1RewriteEngine on 2 3# http://www.hoge.com -> https://www.hoge.com 4RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ 5RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC] 6RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]

https://hoge.comhttps://www.hoge.comも含めたい場合は、下記のようにします。

apache

1RewriteEngine on 2 3# http://hoge.com -> https://www.hoge.com 4RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ 5RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 6RewriteCond %{HTTP_HOST} (.+)$ 7RewriteRule ^(.*)$ https://www.%1/$1 [R=301,NC,L] 8 9# http://www.hoge.com -> https://www.hoge.com 10RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ 11RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC] 12RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]

なお、さくらサーバーに限った話ではないですが、SSLの証明書を作成したときのドメイン限定でのアクセスになるので気をつけてください。(SSL作成したときにhoge.comで作成してしまったら、https://www.hoge.comではアクセスできません)

投稿2017/09/14 07:09

編集2017/09/14 07:28
Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyksm

2017/09/14 07:56

最終的にさくらのヘルプの記述と 今まで通りの記述と混同したら解決出来たのですが 以下で間違いないでしょうか ```ここに言語を入力 SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] </IfModule> RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC] RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] ```
Tomak

2017/09/14 09:50

さくらのヘルプに「REDIRECT_HTTPS」変数の件が載ってました。昔けっこう調べたんですが、知りませんでした・・・(汗;;)ありがとうございます。今日は非常に賢くなった気がします。 さくらサーバーの場合、結果は変わりませんが「</IfModule>」の位置は下記が正しいです。<IfModule mod_rewrite.c>とは、わかりやすくいうと「リライトモジュールが使える状態なら」という意味ですので。 -- SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC] RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L] </IfModule>
hyksm

2017/09/15 05:07

ありがとうございます!修正しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問