• 締切済み

ドメインに:443を付けるとBad Requestとなる事を回避できませんか?

現在、以下のようなURLで証明書を取得し、サイトを運営しております。 http://mydomain.example.jp/ https://mydomain.example.jp/ VirtualHostで動かしている関係上、 http://mydomain.example.jp:443/ というリクエストが来ると「Bad Request Error 400」とブラウザに表示されます。 何らかの方法で、これを表示させずに本来のページにリダイレクトするなどの方法はございませんでしょうか? よろしくお願いいたします。 環境:CentOS4.5 Apache2

  • bunch
  • お礼率82% (251/303)

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

No.3です。 >そのままリダイレクト、という形にはなってくれないようです。 URL書いてもリダイレクトされないんですね。てっきりリダイレクトしてくれるものと思ってました。 >もしやり方に間違いがあれば、ご指摘ただ蹴れば幸いです。 ならば、リダイレクト用のHTML(metaタグのrefreshを利用したり、JavaScriptで飛ばすなど)を作って、それを指定してあげればいいんじゃないでしょうか?

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

ErrorDocumentディレクティブでエラーコードが400の時のリダイレクト先を指定してみてはどうでしょう?

参考URL:
http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
bunch
質問者

補足

httpd.confに記述する形で試してみました。 ErrorDocument 400 http://example.jp/ すると Found The document has moved here. となり、[here]にその指定した物がリンクされます。 そのままリダイレクト、という形にはなってくれないようです。もしやり方に間違いがあれば、ご指摘ただ蹴れば幸いです。

回答No.2

#1です。補足拝見しました。 http://mydomain.example.jp:443/https://mydomain.example.jpへ変換するだけなら、 httpd.confの中で、 <VirtualHost_default_:443> Redirect / https://mydomain.example.jp/ </VirtualHost> というような記述をすることで実現できそうです。 ただ、検索エンジンからのリクエストというところが気にかかります。ホームページの内容がわかりませんのでなんともいえませんが、 暗号化通信をするページへ検索エンジンからのダイレクトなアクセスを受け入れるということですよね。 内容やセキュリティ的に問題が無いかどうか検討して実施されることをお勧めします。 参考にしてください。

bunch
質問者

お礼

結果的には、なぜかうまくいきません。 ドメインのみ置換してそのまま記述した場合、 /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: Syntax error on line 1057 of /etc/httpd/conf/httpd.conf: Expected </VirtualHost_default_:443> but saw </VirtualHost> となってしまいます。 _default_ではなく<VirtualHost*:443>に変更したところ、 Expected </VirtualHost*:443> but saw </VirtualHost> というエラーが起き、起動しません。 次に、以下のページで解説されていた、NameVirtualHostと併記する形を取りました。 http://pascal.orz.cn/muse/pascal/336.html;jsessionid=E47004ADD8B6C1AA5D39F3039FA463A1 Invalid command 'NameVirtualHost*:443', perhaps mis-spelled or defined by a module not included in the server configuration となり、立ち上がりません。 NameVirtualHost *:443 <VirtualHost*:443> Redirect / https://example.jp </VirtualHost> と記述したところやっと立ち上がりました。が、 http://mydomain.example.jp:443/​にアクセスしても以前と同じ状態で、 ​https://mydomain.example.jpjpへ転送されません。何かアドバイスいただけませんでしょうか、よろしくお願いいたします。

回答No.1

バーチャルホストということですが、質問者様が管理運営されているサーバでしょうか。 レンタルサーバの場合は詳細変更は難しいかもしれません。 まず443番ポートを閉じている理由はなんでしょうか? 質問者様の自サーバであればセキュアポートを開ければ済むわけですが なんらかの理由で閉じているのであれば443ポートをポートフォワーディンングしてリダイレクトする方法が考えられます・・・。 とここまで書いたのですが、 >​http://mydomain.example.jp:443/ だと確かに正規のリクエスト要求ではないように思えます。 そのリクエストは正常なリクエストなのでしょうか? 補足していただければもう少しマシな回答ができると思います。 本来のページというのがどのページを指しているのかもあわせて補足していただけると助かります。

bunch
質問者

補足

はい、私が管理しているので、自由に設定を変えることが出来ます。 httpsでの接続の時はPort443でSSL暗号化通信をしているので、閉じている事はありません。 Port443には暗号化通信ではない生の通信は無いとApacheは考えているためにBad Requestとなるのではないか、と考えております。 http://mydomain.example.jp:443/ というようなアクセスは想定していないのですが、検索エンジンからそのようなリクエストが来てしまいます。その場合には https://mydomain.example.jp に飛ばしたいのですが、どのような設定をすればよろしいでしょうか。 お手数をお掛けしますが、アドバイスお願いいたします。

関連するQ&A

  • Apacheのバーチャルホストで設定したドメインで上の階層にアクセスできてしまいます

    Apacheのバーチャルドメインにてmydomain.jpを/www/mydomainに割り振ったのですが 試しに上の階層にファイルを置いてphpでアクセスしてみたのですが、アクセスできてしまいました。。。 これはセキュリティ上よろしくないと思うのですが、指定フォルダ以上にアクセスできないように設定するにはどうすればいいのでしょうか(アクセス出来ないようにしたいです)。 あまりサーバーに詳しくないので設定方法のキーワードなどヒントだけでもご教授いただければと存じます。 httpd.confの設定--- NameVirtualHost *:80 <VirtualHost *:80> ServerName www.mydomain.jp ServerAlias mydomain.jp *.mydomain.jp DocumentRoot /www/mydomain </VirtualHost> phpの記述例--- include_once("../test.php");//上の階層のファイルにアクセスできてしまう

  • gooの画面にBad request

    特に支障はないのですが、gooを見るときに変なメッセージが表示されていて、以前から気になっていました。 内容は『Bad request あなたのブラウザが送信したリクエストは、サーバに理解することができないものです』というものです。 なにか設定を間違っているのでしょうか。もしご存知の方がいましたらご一報下さい。 ちなみにこのメッセージが現れるのも変な位置で、説明しづらいのですが、壁紙の一部のように表示されます。一部しか見えなかったり、連続していたり。しかし手前の表示を覆うようなことはありません。

  • インターネット上のエラー Bad request

    つい最近インターネットをやっていたら いつもは入れたサイトが入れず 400(404?) bad request と表示されます。またmsnでログインすると ページが見つかりませんと表示されます。 ウィルスのせいだとおもいウィルススキャンをしたんですが改善されませんだした。 できたら解決方法や原因をおしえてください おねがいします。

  • apacheのNameVirtualHostについての質問です。

    apacheのNameVirtualHostについての質問です。 サブドメインで別のサイトを運営したいのですが、 設定ファイルにて以下のように設定し、(ドメイン名は架空のものです) NameVirtualHost *:80 <VirtualHost *:80> ServerName site1.mydomain.com DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80> ServerName site2.mydomain.com DocumentRoot /var/www/html2 </VirtualHost> コマンドでの確認でも正常に設定できているようなのですが # httpd -S VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:80 is a NameVirtualHost default server site1.mydomain.com (/etc/httpd/conf.virtual/mydomain.conf:7) port 80 namevhost site1.mydomain.com (/etc/httpd/conf.virtual/mydomain.conf:7) port 80 namevhost site2.mydomain.com (/etc/httpd/conf.virtual/mydomain.conf:18) Syntax OK http://site2.mydomain.comでアクセスしてもsite1.mydomain.comのDocumentRootの/var/www/htmlの方が表示されてしまいます。 また、逆に設定ファイルにてsite2.mydomain.comを先に書くとdefault serverがsite2.mydomain.comになってhttp://site1.mydomain.comでアクセスしてもsite2.mydomain.comの内容が表示されてしまいます。 nslookupでは #nslookup site1.mydomain.com Name: site1.mydomain.com Address: xxx.xxx.xxx.xxx #nslookup site2.mydomain.com Name: site2.mydomain.com Address: xxx.xxx.xxx.xxx xxxとしていますが、どちらも正しいアドレスが引けているのでDNSの問題ではなさそうなのですが。。。 OSはCentOS 5.4、apacheのバージョンは2.3.3です。 どうかよろしくお願いします。

  • certbot-autoで複数ドメインの証明書

    centos6+Apacheでcertbot-autoを使いSSL化をしようとしています。 hoge1.jp hoge2.com hoge2.jp の3つのドメインを一つのサーバーにて使用してます。 いろいろ試してみたところhoge1.jpはhttpsへリダイレクトできましたが、hoge2.comとhoge2.jpが警告が出る、または自動でhttps://hoge1.jpへリダイレクトされてしまい困っております。 検索してみてるのですがマルチドメインの方法は多数ありますが複数ドメインのほうは見つかりません。 うまく設定できたかた、ご教授いただけませんでしょうか。

  • Apacheを使用せずにTomcat単体で運用する方法を教えてください

    Apacheを使用せずにTomcat単体で運用する方法を教えてください。 現在、次のほうにApacheとTomcatを連携させて運用しています。 <VirtualHost *:80> ServerName aaa.example.com ProxyPass / http://localhost:8080/xxxx/dir/ </VirtualHost> <VirtualHost *:80> ServerName www.example.com ProxyPass / http://localhost:8080/xxxx/ </VirtualHost> ※xxxx・・・アプリ名 このような設定を、Apacheなしでする方法を教えてください。

  • apache,ssl,virtualhost

    VPS上にいくつかのサブドメインでバーチャルホスト(名前ベース)を運用しています。 実現したいのは以下の設定です。  ブラウザに入力されたURL => リダイレクト先 (1)http://hoge.net => https://hoge.net (2)http://www.hoge.net => https://hoge.net (3)https://www.hoge.net => https://hoge.net SSL証明書が有効なのは、『hoge.net』と『hige.hoge.net』です。『www.hoge.net』は有効ではありません。 wwwについては、あっても無くてもアクセス可能とし、あった場合はリダイレクト(いわゆる無しで統一)したいので、設定してあります。 (1)と(2)は問題ないのですが、ブラウザに(3)を入力するとセキュリティの警告エラーが出てしまいます。 その警告を無視して進むとリダイレクトされて、正常に表示されます。 SSL証明書の追加取得以外で、この警告を回避してリダイレクトする方法を教えていただきたいです。 環境:apache2.2 設定内容:httpd.confではなくvhost.confファイルに下記を記述。(見易いように、先頭空白を全角に変更してあります。) <Directory /var/www/html/*/public_html>   Options FollowSymLinks   AllowOverride All   Order allow,deny   Allow from all </Directory> <VirtualHost *:80>   ServerName hoge.net   Redirect permanent / https://hoge.net </VirtualHost> <VirtualHost *:443>   ServerName hoge.net   DocumentRoot /var/www/html/hoge/public_html   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> <VirtualHost *:80 *:443>   ServerName hige.hoge.net   DocumentRoot /var/www/html/hige/public_html   RewriteEngine on   RewriteCond %{HTTPS} off   RewriteRule . https://hige.hoge.net%{REQUEST_URI} [R=301,L]   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> よろしくお願いいたします。

  • サブドメイン自動化のhttpd.conf設定

    専用サーバーにてwebサイトを作成しています。 webサイトの会員ユーザ毎に、サブドメインを自動生成できるようにしたいと考えています。 ドメイン名:example.jp サブドメイン:username.example.jp 対象ディレクトリ:/var/www/html/domains1/username/ ユーザが登録すると、上記のusernameフォルダが自動で作成されるようになっています。 そのフォルダ名を利用し、 username.example.jp のようなサブドメインでアクセスできるようにしたいです。 検索した結果 1. ネームサーバーにワイルドカードでAレコードを記述する。 2. Apacheの設定ファイルhttpd.conf にServerAliasを設定する。 この方法で設定してみました。 httpd.conf記述 <VirtualHost *:80> ServerName www.example.jp ServerAlias *.example.jp VirtualDocumentRoot /var/www/html/domains1/%1/ </VirtualHost> と、ここまでは設定し、実際に実現する事が出来ました。 ただ、上記のVirtualDocumentRootのところの、domains1 のディレクトリ内に作成するユーザーフォルダの数に制限(例えば1000とか)をかけようと考えていて、ユーザー登録が1000毎に、domains2, domain3と自動で作成されていくようにしています。 どのユーザも username.example.jp とサブドメインで表示するが、 domains1,domains2, domain3のように、DocumentRootがひとつでない。 ※また、どのフォルダに入っているかわからないので検索が必要? このような場合、どのような記述をすればよいのでしょうか? そもそも実現可能なのかどなたかアドバイスいただけませんでしょうか。

  • Getリクエストによりダウンロードファイルを変える

    お世話になります。aizawa_naoと申します。 --------------------------------------- 環境、php5.2.0-8 apache2.2.4 debian --------------------------------------- 上記の環境で、簡単なphpスクリプトを作成しようと思っています。 ほとんど、phpの知識はないのですが、phpでgetリクエストを受け取り、 それをブラウザに出力することは出来ます。 これをサイトなどで、よく見るGetのパラメータにより、ダウンロードする ファイルを変化させたいのですが、どのような記述になるのでしょうか? 例)http://example.com/test.php?file=test.zip このようなリクエストがくると、test.zipをダウンロードし、   http://example.com/test.php?file=test2.zip とするとtest2.zipがダウンロードされるような仕組みをご教示いただければと思います。 初歩的な質問で申し訳ありませんが、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • index.htmlを省略してくるアクセスをリダイレクトしたい

    index.htmlを省略してくるアクセスをリダイレクトしたい お世話になっております。 ApacheのRedirect機能を持ちいて、 以下のように携帯キャリア毎に用意したindex.htmlファイルを外部サーバへと リダイレクトすることを目論んでいます。 ======================================================================= Redirect permanent /i/index.html http://www.hoge.co.jp/hoge/index.html ======================================================================= ところが、上記のように定義しても、http://www.example.jp/i/という風に、 index.htmlを省略してくるアクセスの場合、 http://www.hoge.co.jp/hoge/index.htmlにリダイレクトさせることができず、 200番の応答コードとともに、http://www.example.jp/i/index.htmlをApacheが返してしまっており 困っております。 http://www.example.jp/i/index.htmlと、 index.htmlを省略せずアクセスした場合には、 ちゃんと、301でhttp://www.hoge.co.jp/hoge/index.htmlへリダイレクトしてくれます。 また、同じApahceで必ずファイル名を省略せずにアクセスしてくるケースに対して、 たとえば、以下のように定義しているのですが、これも期待通りの動作となっております。 ======================================================================= Redirect permanent /i/xxxx.html http://www.hoge.co.jp/hoge/xxxx.html ======================================================================= ファイル名(index.html)を省略してくるアクセスをリダイレクトしたい場合、 どのように定義すれば期待通りの動作が得られるでしょうか。 リダイレクトの仕方は、ApacheのRedirectにこだわっていませんので、 何か実現可能な方法がありましたらどなたか教えて頂けますと大変助かります。 よろしくお願いいたします。