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

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

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

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

Apache

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

Q&A

解決済

2回答

1275閲覧

ApacheのRewriteRuleでファイル名まで指定するとhttpsにリダイレクトされない

lin.ming

総合スコア50

CentOS

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

Apache

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

0グッド

0クリップ

投稿2018/09/29 09:01

編集2018/09/30 05:50

遅まきながら自分のウェブサイトをhttps対応しました。(Let's encryptで)
CentOS 7.x + Apache 2.4.x
です。

ウェブブラウザのアドレスバーに下記アドレスを打ち込むとhttpsにリダイレクトされます。

www.my.example.com/

www.my.example.com/gadgets/

しかしながら
www.my.example.com/index.html

www.my.example.com/gadgets/my.cgi
の場合は、httpのままです。

Apache の RewireRule の書き方が間違っていると思うので、気づいた点を教えていただけないでしょうか。

なお、Apache のアクセスログは、上の4つとも「200」のステータスを返します。

httpd.confの関係ありそうなところを書きます。必要なところまで省略していたらごめんなさい。

httpd.conf

1<VirtualHost *:80> 2 DocumentRoot /home/my/www 3 ScriptAlias /cgi-bin/ "/home/my/www/cgi-bin/" 4 ServerName www.my.example.com 5 AddOutputFilter INCLUDES .html 6 <Directory "home/my/www"> 7 Options Includes ExecCGI FollowSymLinks 8 AllowOverride All 9 Require all granted 10 </Directory> 11 <Directory "home/my/www/cgi-bin"> 12 Options Includes ExecCGI 13 AddHandler cgi-script .cgi .pl .pm 14 AllowOverride None 15 Require all granted 16 </Directory> 17 18RewriteEngine on 19 20RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) 21RewriteRule .* - [F] 22 23RewriteCond %{SERVER_NAME} =www.my.example.com 24RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 25RewriteRule ^/cgi-bin/(.*)$ https://%{SERVER_NAME}/cgi-bin/$1 [END,NE,R=permanent] 26 27</VirtualHost>

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

自己解決

解決しました。

質問で省略した箇所ですが、ローカルキャッシュさせるため、以下を書いていました。

RewriteRule .(php|pl|cgi)$ - [L,E=x_dynamic_file:] RewriteRule .html$ - [L,E=x_html_file:] RewriteRule .(css|js)$ - [L,E=x_static_file:] RewriteRule .(gif|jpe?g|png)$ - [L,E=x_image_file:]

以下をその文の前に書いたら、正しくリダイレクトされるようになりました。

RewriteCond %{HTTPS} off RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent] RewriteRule ^/cgi-bin/(.*)$ https://%{SERVER_NAME}/cgi-bin/$1 [END,NE,R=permanent]

お騒がせしました。

投稿2018/10/01 08:51

lin.ming

総合スコア50

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

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

0

投稿2018/09/30 23:50

tonkun4os

総合スコア321

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

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

lin.ming

2018/10/01 03:44

RewriteCond %{HTTPS} off RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent] と書き直したのですが、まだ http://www.my.example.com/index.html がリダイレクトされずそのまま表示されます。
ssasaki

2018/10/01 03:52

横からですが、ブラウザのキャッシュの影響ではないことは確認済みですか? アクセスした時のアクセスログを毎回確認していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問