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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

Q&A

解決済

1回答

616閲覧

Apache リダイレクト

moni

総合スコア26

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

0グッド

1クリップ

投稿2019/03/01 05:58

Apacheのリダイレクトの設定、特にhttpをhttpsに、wwwありをwwwなしにすることを実現したいのですが、当サイトの関連質問や、他のサイトをいくら見ても解決できませんでした。
当方フロントエンドについては初心者のため、状況を正確に記述できる自信はございませんが、何卒汲み取っていただけると幸いです。

環境

ConoHa VPS
CentOS 7.6
Apache 2.4.6

ソースコード

下記ページを参考にし、以下のようにリダイレクト専用のconfファイルを置いています。
(とりあえずは常時https化のみ。wwwは別で考えようと思っています)
https://qiita.com/sue71/items/100004b704b9ff129b09

(/etc/httpd/conf.d/rewrite.conf)

<ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </ifModule>

また、virtual hostのconfファイルは以下です。
(例としてhogehoge.comとして記述致します)

(/etc/httpd/conf.d/http-vhost.conf)

NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName hogehoge.com DocumentRoot /var/www/html/hogehoge </VirtualHost> <VirtualHost *:80> ServerName www.hogehoge.com DocumentRoot /var/www/html/hogehoge </VirtualHost> <VirtualHost *:443> ServerName hogehoge.com DocumentRoot /var/www/html/hogehoge SSLEngine on SSLCertificateFile /etc/letsencrypt/live/hogehoge.com/cert.pam SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.com/privkey.pam SSLCertificateChainFile /etc/letsencrypt/live/hogehoge.com/chain.pam </VirtualHost> <VirtualHost *:443> ServerName www.hogehoge.com DocumentRoot /var/www/html/hogehoge SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.hogehoge.com/cert.pam SSLCertificateKeyFile /etc/letsencrypt/live/www.hogehoge.com/privkey.pam SSLCertificateChainFile /etc/letsencrypt/live/www.hogehoge.com/chain.pam </VirtualHost>

試したこと

  • http-vhost.confにもあるように、wwwある、なし双方で別々にLet's Encryptで証明書を用意しています。
  • mod_rewriteのLoadは、/etc/httpd/conf.modules.d/00-base.confで為されているのを確認しました。
  • Qiitaのようにリダイレクト専用ではなく、http-vhost.confの<VirtualHost>の中にも書いてみましたが、実現できませんでした

以上、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

例えばこんなふうに .htaccess に書いてます。

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

投稿2019/03/01 06:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

moni

2019/03/01 07:17

ご回答いただきありがとうございます。 上記.htaccessファイルを/var/www/html/hogehoge下に置き、実行したところ ①http://hogehoge.com ⇒ https://hogehoge.com ②https://www.hogehoge.com ⇒ https://hogehoge.com は成功しました、ありがとうございます! ただ、①、②の合わせ技ともいえる ③http://www.hogehoge.com ⇒ https://hogehoge.com は実現されず、そのままアクセスが通過してしまいます。 此方の解決策はご存知でしょうか…?
退会済みユーザー

退会済みユーザー

2019/03/01 07:21

余計なリライト設定があれば、機能しないかもしれませんので、 httpd.conf内でのリライトをやめて上記 .htaccess のみにすればスマートかと。
moni

2019/03/01 07:39 編集

仰る通り、/etc/httpd/conf.d/rewrite.confを削除すれば実現できました! 本当に助かりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問