https→httpsのrewriteが上手くいかない | 質問内容の要約

このQ&Aのポイント
  • https→httpsのrewriteが上手くいかないという問題が発生しています。要約文の内容をまとめると、追加ドメインを取得したことにより、1つのファイルへ複数のドメインでアクセスできる状況が生じています。httpからhttpsへのリダイレクトは成功していますが、httpsからhttpsへの設定が上手くいかず、特定のアドレスではリダイレクトが行われない状態です。解決策についての具体的な方法を教えていただきたいです。
  • httpsからhttpsへのrewriteの設定がうまくいかない問題が発生しています。具体的には、特定のアドレスでリダイレクトが行われず、そのままのアドレスとなっています。httpからhttpsへのリダイレクトは成功しており、追加ドメインを取得したことにより、1つのファイルへ複数のドメインでアクセスできる状況が生じています。解決策として、httpsからhttpsへの設定を成功させる方法について教えていただきたいです。
  • https→httpsのrewriteの設定で問題が発生しています。具体的には、httpsからhttpsへのアドレス変更がうまくいかず、そのままのアドレスで表示されてしまいます。httpからhttpsへのリダイレクトは正常に動作しており、追加ドメインを取得したことで複数のドメインでアクセスできるようになりました。解決策として、httpsからhttpsへのアドレス変更が正しく行われるようにする方法を教えていただきたいです。
回答を見る
  • ベストアンサー

https→httpsのrewriteが出来ない

https→httpsのrewriteが上手くいきません。 追加ドメイン取得前より、http→httpsのrewriteの設定をして利用していました。 今回、追加ドメイン(これを正式なURLとしたい)を取得したことにより、1つのファイルへ複数のドメインでアクセス出来る状況になってしまいました。  さくらのVPS   仮)IPアドレス   49.39.29.19     初期ドメイン  www1111aa.sakura.ne.jp  さくらのドメイン   仮)追加ドメイン  www.bbbb.com  ※CentOS httpd.confの2つのファイルを書きなおし、以下のrewriteは成功しました。  http://49.39.29.19 → https://www.bbbb.com  http://www1111aa.sakura.ne.jp→ https://www.bbbb.com  http://bbbb.com → https://www.bbbb.com しかしhttps→httpsの設定が上手くいかず、以下についてはそのままのアドレスとなってしまいます。  https://49.39.29.19  https://www1111aa.sakura.ne.jp  https://bbbb.com 上記の場合でもhttps://www.bbbb.comへ飛ぶように設定したいのですが、どのようにしたらよいかご教授ください。 ちなみに。私が既にhttpd.confに書いてダメだったものは以下です。 (1) <VirtualHost 49.39.29.19:443 > ServerName www.bbbb.com Redirect / https://www.bbbb.com </VirtualHost> (2) <IfModule mod_rewrite.c> RewriteEngine on ・・・ RewriteCond %{SERVER_PORT} ==443$ RewriteRule ^/(.*)?$ https://www.bbbb.com/$1 [L,R] </IfModule> ※ ^443$ともしてみましたがダメでした。 (3) <VirtualHost 49.39.29.19:443 > RewriteEngine On RewriteCond %{HTTP_HOST} ^bbbb\.com RewriteCond %{HTTP_HOST} ^www1111aa\.sakura\.ne\.jp RewriteCond %{HTTP_HOST} ^49\.39\.29\.19 RewriteRule /(.*) https://www.bbbb.com/$1 [R=301,L] </VirtualHost> ※VirtualHost以下を<IfModule mod_rewrite.c>で囲んだり、VirtualHostを<IfModule mod_rewrite.c>に変えたりしてみてもダメでした。 (4) Listen 80 Listen 443  と443を追記してみると、アパッチが再起動しなくなりました。エラー内容は以下です。 <エラー内容> NameVirtualHost *:80 has no VirtualHosts (98)Address already in use: make_sock: could not bind to address [::]:443 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs 仕事で急遽サーバー構築をしなければならなくなり勉強をしているもので、素人ですので分かりやすい言葉で説明していただけると助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 書き方は一緒です。 直接confファイル触れるのなら、とりあえずログ出してみて、どこでスルーされてるのか調べた方が早いです。

serizawapaseri
質問者

お礼

出来ましたー ログを出してみたら、httpsで入力した時だけログが書き込まれなかったので、ssl.confの書く場所を<VirtualHost *:443 >で囲みなおすのではなくて、<VirtualHost _default_:443>の最後に追加したら上手くいきました。 ありがとうございました m(_ _)m

その他の回答 (1)

回答No.1

こんにちは。 httpd.conf以外でSSL用のconfがないですか? そちらですでに443ポートに対する設定やバーチャルホスト書いてませんかね? すでにListenしてるという事は、そちらの設定ファイルが読み込まれている可能性が大です。

serizawapaseri
質問者

お礼

回答ありがとうございます。 ご指摘の通り、ssl.confを読み込んでいて、そちらでListen443になっていました。 なので、そちらのファイル内に <VirtualHost *:443 > <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^bbbb\.com RewriteCond %{HTTP_HOST} ^www1111aa\.sakura\.ne\.jp RewriteCond %{HTTP_HOST} ^49\.39\.29\.19 RewriteRule /(.*) https://www.bbbb.com/$1 [R=301,L] </IfModule> </VirtualHost> としてみたのですが状況は変わりませんでした。 ssl.confに書く場合は書き方が変わるんでしょうか?

関連するQ&A

  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • スマフォの振り分け

    .htaccess で以下のように振り分けたのですが、i pod touch で見ると アドレス欄には http://ドメイン/smart/ を読み込むのですが、 ページが開けないになります。どうしてでしょうか? <IfModule mod_rewrite.c> RewriteEngine On # iPod RewriteCond %{HTTP_USER_AGENT} iPod RewriteRule ^ http://ドメイン/smart/ [R] # iPhone RewriteCond %{HTTP_USER_AGENT} iPhone RewriteRule ^ http://ドメイン/smart/ [R] # Android RewriteCond %{HTTP_USER_AGENT} Android RewriteRule ^ http://ドメイン/smart/ [R] # WILLCOM RewriteCond %{HTTP_USER_AGENT} PDA RewriteRule ^ http://ドメイン/smart/ [R] </IfModule>

    • ベストアンサー
    • HTML
  • HTTPSにおけるリダイレクト設定に関して

    Apache2.2+mod_sslにてSSL通信環境を構築しました。 DNS設定は「sample.com」も「www.sample.com」も同じサーバIPを指定しております。 「www.sample.com」をコモンネームとした証明書を認証局から取得し、 「https://www.sample.com/」にアクセスする場合は問題はありませんでした。 しかし、「https://sample.com/」にアクセスすると、 IEでは「このWebサイトのセキュリティ証明書には問題があります。」と表示されてしまいます。 この問題を解決しようとリダイレクトの対処も含め、以下の様な対応を行いましたが解決できませんでした。 どの様な対応を行えば、上記問題を解決する事ができるのでしょうか? 「sample.com」についても証明書を発行してもらうしかないのでしょうか? 皆様のお知恵をお借りしたく、何卒よろしくお願い致します。 以下、行った対応 ―――――――――――――――――――――― ■mod_rewrite.soを有効にする。 LoadModule rewrite_module modules/mod_rewrite.so ■httpd.confの末尾に以下を追記する。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^sample\.com RewriteRule ^/(.*)$ https://www.sample.com/$1 [R=301,L] RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*)?$ https://%{HTTP_HOST}/$1 [L,R] </IfModule> ■3.httpd-ssl.confに以下を追記する。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^sample\.com RewriteRule ^/(.*)$ https://www.sample.com/$1 [R=301,L] </IfModule>

  • mod_rewriteについて教えてください。

    mod_rewriteについてお願いします。 「a」と「b」というフォルダにそれぞれ「index.html」「test.html」が入っています。「a」と「b」で「index.html」「test.html」の内容はちがいます。 わたしが一番望んでいるのは http://example.com/a/以下にアクセスがあった場合 http://example.com/b/以下にリダイレクトさせるというものです。 例) http://example.com/a/test.htmlにアクセスがあったらhttp://example.com/b/test.htmlにリダイレクト。 ------------------------------------------------------------ Options +FollowSymLinks AddHandler cgi-script htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/a/$ /b/$1 [R=302,L] </IfModule> ------------------------------------------------------------ としてみましたが、リダイレクトされません。 ちなみに RewriteRule ^$ /b/$1 [R=302,L] と書くと、http://example.com/にアクセスがあった場合 http://example.com/b/にリダイレクトされましたので mod_rewriteには対応しております。 ご教授のほど、よろしくお願いいたします。

  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

  • アドレスの最後に/が無い場合、/ありのアドレスに飛ばしたい

    mod_rewrite を使って、静的なページのようにアドレスを表示させました。 http://****.jp/page/10/ このようなアドレスでアクセスできるのですが、アドレスの最後のスラッシュがなくてもアクセスする事が出来ます。 http://****.jp/page/10 ←スラッシュがない そこで、アドレスの最後のスラッシュがないアドレスにアクセスした場合、スラッシュありのアドレスに飛ばすにはどの様にすればいいのでしょうか? .htaccessは、下記のようにしています。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /page/index.php [L] </IfModule>

  • mod_rewriteの初歩的な質問なのですが

    すいません。今データベースを使った簡単なウェブサイトを作っていまして mod_rewriteについて分からないことがあります。 (phpなど勉強を始めたばかりで質問の意味が分かりにくいかもしれません) やりたいことは実際には存在しないhtmlのサイトを検索にスクロールしてもらって クライアントから要求があったアドレスに従いデータベースから任意のデータを表示すると いったものです。 例えば 1000.html 1001.html 1002.html・・・・・に要求があった場合phpの$_SERVER['HTTP_HOST']を 使って要求のあったアドレスを抜き取り任意のhtmlを表示させるといった事を考えています。 リダイレクト自体は初心者向けのサイトを見て簡単にできたのですが、 1000.html 1001.html 1002.html・・・ の部分を一度に表記する方法はないでしょうか。(1000.html~5000.htmlのようなこの範囲を全て条件としてRewriteCondに入れたい) 最終的には5000ページ程度を考えているため一つ一つ記載するのは難しいです。 RewriteEngine on RewriteCond %{HTTP_HOST} ^(1001\.html)(:80)? [NC] RewriteRule ^(.*) http://abcdefg.com/$1 [R=301,L]

  • Apacheでmod_rewriteを利用して複数ドメインを1個ですませる

    Apacheでmod_rewriteを利用して複数ドメインを1個ですませる方法を探しています。 rewriteマスターはいませんか? 現在virtualhostが数百ありますが、再起動速度が遅いこと、メモリ消費量が多いことから、1個ですませたいと思ってします。 <virtualhost></virtualhost>内でrewriteを利用して1個ですませる設定を教えていただけないでしょうか。 mod_vhost_aliasを考えましたが、他の設定も入れたいのでmod_rewriteでどうにかできないかと思っています。 教えていただけないでしょうか。

  • .htaccessでリダイレクトしたいです@さくら

    .htaccessでwwwなしのサイトにリダイレクトをかけたいのですが、うまくいきません。 色んな方法がサイトにありそれを試しているのですが、 一瞬テストでうまくいったと思ったのですが、それ以降うまくいかなくなってしまいました。 使用しているプロバイダはさくらインターネットです。 今までに試したコマンドは下記です。 --------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.hoge\.com)(:80)? RewriteRule ^(.*) http://hoge.com/$1 [R=301,L] </IfModule> --------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} www¥.hoge¥.com RewriteRule .* http://hoge.com%{REQUEST_URI} [R=301,L] --------------------------- .htaccess を設置しているディレクトリは /home/hoge/www になります。 ぜひ教えていただけないでしょうか。よろしくお願いいたします。 また、.htaccessは変更してどのくらいで反映されるのか、補足的に教えていただけると助かります。 以上、よろしくお願いいたします。

  • mod _rewriteによる二重リダイレクト

    mod_rewriteで下記のようなことをしたいと思っています。 1.http://~/ABCDEFG.jpgにアクセスがあったら、 2.http://~/AB/CD/EFG.jpgにリダイレクトする。 3.http://~/AB/CD/EFG.jpg がなかったらhttp://~/NO.jpgにリダイレクトする。 2.まではできるのですが、3.に進みません・・・。 このようなことを実現できないでしょうか。すごく困っております・・・。 お手数ですがご教示いただけないでしょうか。 ---- 以下2.までできたmod_rewrite <DirectoryMatch ~> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z]+\.jpg) $1/$2/$3 [L] </IfModule> </DirectoryMatch>

    • ベストアンサー
    • PHP