質問: apache仮想ホストはウェブサイトの代わりに「インデックス」ページを表示します ブラウザーにドメイン名を入力すると、私のwebサイトのコンテンツではなく、「/のインデックス」ページが表示されます。 ec2でdjango、mod-wsgi、apacheを使用しています。私のapacheconfファイルは次のようになります。<virtualhost 52.79.**.**:80> serveradmin webmaster@localhost documentroot /var/www/qna alias /m/ /var/www/qna/static/ alias /upfiles/ /var/www/qna/askbot/upfiles/ <directorymatch “/var/www/qna/askbot/skins/([^/]+)/media”> require all granted </directorymatch> <directory “/var/www/qna/askbot/upfiles”> require all granted </directory> wsgidaemonprocess qna wsgiprocessgroup qna wsgiscriptalias / /var/www/qna/django.wsgi <locationmatch “(?!/m)/admin(?!/media)”> rewriteengine on rewriterule /admin(.*)$ https://mywebsite.com/admin$1 [l,r=301] </locationmatch> customlog /var/log/apache2/t_access_log common errorlog /var/log/apache2/qna_error_log loglevel debug </virtualhost> <virtualhost 52.79.**.**:443> serveradmin webmaster@localhost documentroot /var/www/qna <locationmatch "^(?!/admin)"> rewriteengine on rewriterule django.wsgi(.*)$ http://mywebsite.com$1 [l,r=301] </locationmatch> sslengine on sslcertificatefile /etc/ssl/private/qna.crt sslcertificatekeyfile /etc/ssl/private/qna.key alias /admin/media/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/media/ alias /m/ /var/www/qna/static/ wsgiscriptalias / /var/www/qna/django.wsgi customlog /var/log/apache2/qna_access_log common errorlog /var/log/apache2/qna_error_log </virtualhost> 私は初心者ですが、apacheの設定に根本的な問題があると思います。私はこれに過去4日間を費やし、これを解決するためにあらゆることを試みましたが、何も解決しませんでした。apacheはdjangoを理解していないため、wsgiの設定に問題があると思います。 settings.pyファイルは/ var/www/qnaにあります。django1.8.8およびpython 2.7.6、amazon ec2ubuntu。よろしくお願いします。助けてください。servername mysite.comとserveraliasに変更して追加しようとしましたが、この場合、500内部サーバーエラーが発生します。virtualhost configuration: *:80 mysite.com (/etc/apache2/sites-enabled/qna.conf:1) *:443 mysite.com (/etc/apache2/sites-enabled/qna.conf:31) serverroot: "/etc/apache2" main documentroot: "/var/www" main errorlog: "/var/log/apache2/error.log" mutex rewrite-map: using_defaults mutex ssl-stapling: using_defaults mutex ssl-cache: using_defaults mutex default: dir="/var/lock/apache2" mechanism=fcntl mutex watchdog-callback: using_defaults pidfile: "/var/run/apache2/apache2.pid" define: dump_vhosts define: dump_run_cfg user: name="www-data" id=33 not_used group: name="www-data" id=33 not_used しかし、私が実行するとpython maange.py runserver 0.0.0.0:80問題なく動作します。ドメイン名を入力してウェブサイトにアクセスできます。
回答: これがあなたの設定です。読みやすさのために私の私を再フォーマットしました:<virtualhost 52.79.**.**:80> serveradmin webmaster@localhost documentroot /var/www/qna alias /m/ /var/www/qna/static/ alias /upfiles/ /var/www/qna/askbot/upfiles/ <directorymatch “/var/www/qna/askbot/skins/([^/]+)/media”> require all granted </directorymatch> <directory “/var/www/qna/askbot/upfiles”> require all granted </directory> wsgidaemonprocess qna wsgiprocessgroup qna wsgiscriptalias / /var/www/qna/django.wsgi <locationmatch “(?!/m)/admin(?!/media)”> rewriteengine on rewriterule /admin(.*)$ https://mywebsite.com/admin$1 [l,r=301] </locationmatch> customlog /var/log/apache2/t_access_log common errorlog /var/log/apache2/qna_error_log loglevel debug </virtualhost> <virtualhost 52.79.**.**:443> serveradmin webmaster@localhost documentroot /var/www/qna <locationmatch "^(?!/admin)"> rewriteengine on rewriterule django.wsgi(.*)$ http://mywebsite.com$1 [l,r=301] </locationmatch> sslengine on sslcertificatefile /etc/ssl/private/qna.crt sslcertificatekeyfile /etc/ssl/private/qna.key alias /admin/media/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/media/ alias /m/ /var/www/qna/static/ wsgiscriptalias / /var/www/qna/django.wsgi customlog /var/log/apache2/qna_access_log common errorlog /var/log/apache2/qna_error_log </virtualhost> 仮想ホストが設定されている場合、52.79.**.**:80のipアドレスを介してwebサイトにアクセスしようとすると、すべて問題ないと思いますが、example.comのようなホスト名/ドメイン名を介してアクセスしている場合は、窒息しています。 ?その場合は、次のように仮想ホストラインを設定する必要があります。<virtualhost *:80> そしてこれはhttpsの場合:<virtualhost *:443> 次にwithinこれらの構成ブロックでは、次のようにservername値を設定します。もちろん、これは完全な構成ではありませんが、変更する必要があるものの単なる例です。<virtualhost *:80> serveradmin webmaster@localhost documentroot /var/www/qna servername www.example.com serveralias www example.* www.example.* このようなことを行うと、仮想ホスト構成が正しく機能し、www.example.comがその構成に接続された実際のサーバー名になり、serveraliasにより、構成はwww.example.comやexample.comなどのwww.example.netの他のバリアントをキャプチャできます。