質問: ### 前提・実現したいこと SSLの導入に伴い以下のことを実現したい 1.www無しのアドレスにアクセスを統一 2.HTTPアクセスをHTTPSに変更 証明書導入に伴いhtaccessで301リダイレクトを行うと、ブラウザ上のアクセスや 内部システムのメールなどは問題ないが、社内システムで使用しているメールへの添付が使えない。 (添付のメールが届かなくなった) プログラム側の問題なのか、サーバー設定(htaccess含)の問題かの切り分けをまず行いたい。 しかし本番環境での発生の為、気軽に検証が出来ないことから検討している対策に問題がないか意見を伺いたい。 ### 発生している問題・エラーメッセージ 表示上はエラーなどは一切なく社内システムでのメール添付が使用できない ### 該当のソースコード システム自体はPHP/Perl/Rubyで作成され、古いソースに機能を追加する形で使用され10年近く運用されています。 以下の内容をhtaccessに設定しています。 RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] ### 試したこと 原因が分からないためまだ試せていない。 以下に変更することで(サーバー側の問題であれば)対応可能ではないかと考えています。 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?example.com RewriteRule ^(.*)$ https://example.com/$1 [R] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] Redirectは301でなくても良いのではないか?という点。 最初のwww無しでのリダイレクト時のLを取ることで以降のルールも適用するように変更しました。 不足している情報などがあるかもしれませんが、アドバイスいただけると助かります。 追記 -- 質問内容があやふやになり申し訳ありません。 現在設定しているwww無しへの統一、HTTPSへのリダイレクトの設定の問題がありシステムに問題が出ているのではないかと考えております。 その為、現在設定しているrewrite engineを新たに記載した内容に書き換えればよいのではないか? と考えております。 その為、新たに修正するrewrite engineの記載内容が一般的に見てまず間違っていないか? という点の確認が出来ればと考えております。
回答: 「該当のソースコード」に記載の.htaccessの内容で問題ないですよ。 > > htaccessで301リダイレクトを行うと、ブラウザ上のアクセスや > > 内部システムのメールなどは問題ない > > > とリダイレクトの動作も問題ないようですし。 >社内システムで使用しているメールへの添付が使えない。 >(添付のメールが届かなくなった) これは、この「システム自体はPHP/Perl/Rubyで作成され」ているものからメールを送信している前提で。 サーバーサイドの処理で添付ファイルを生成してメールを送信しているのであればwebサーバーの設定は全く関係ないと思います。(リダイレクトの設定をしない状態でも、https://example.com/ でアクセスした場合は同じ現象になってたのでは?) 添付ファイルを生成・送信する処理でエラー等発生していないか apacheおよびアプリケーションのログファイルを確認してください。 その他の確認事項 * https://からhttp://へのリクエストはブラウザーのセキュリティ機構によりブロックされます。 Ajax/javascriptどでブラウザーから添付ファイルをサーバーに送信などしているのであれば、全てのリクエストがhttps:// で送信されているかを確認してください。 * POST先のURLはリダイレクトが発生しないURL(https://example.com/)へPOSTされるようにしてください。 http://example.com/ などへPOSTした場合、リダイレクトが発生しリダイレクト先へはGETでアクセスされPOSTしたデータは失われます。