1

私は少し立ち往生していて、これは些細な問題だと確信していますが、正しい解決策を見つけることができないようです。

apache2 w/mod_sslとmod_rewriteを実行しているローカル開発サーバーがあります。自己署名証明書を作成し、*:443のそれぞれの仮想ホストディレクティブを追加しました。私が抱えていると思われる問題は、SSL側が適切に機能するようになったということです。そして、私が正しく言うと、index.phpを追加せずに自分のサイトのhttps url(https://dev.mysite/など)にアクセスでき、index.phpが正常にプルアップされることを意味します。

しかし、サイトの通常のhttp URLにアクセスするときは、サイトを表示するためにindex.phpを入力する必要があります。(例:http://dev.mysite/index.php

DirectoryIndexディレクティブを*:80ブロックに追加しようとしましたが、それでも機能しないようです。

以下は、仮想ホストファイルの内容です。

ServerName dev.mysite

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/vhosts/bsah_dev/mysite

    <Directory />
            DirectoryIndex index.php
            Options Indexes FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/vhosts/bsah_dev/mysite/>
            DirectoryIndex index.html index.htm index.php
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/vhosts/bsah_dev/mysite

    SSLEngine On

    <Directory /var/www/vhosts/bsah_dev/mysite>
            <IfModule mod_rewrite.c>
                    RewriteEngine on
                    RewriteCond %{HTTPS} !^on$ [NC]
                    RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
            </IfModule>
    </Directory>

    SSLOptions +StrictRequire

    SSLCertificateFile /etc/apache2/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
</VirtualHost>
4

1 に答える 1

2

この問題の修正に役立つ可能性のある構成に関するいくつかのコメント:

<Directory />
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride None
</Directory>

これは非常に珍しいことです。通常、ルートディレクトリ(ドキュメントルートではなく、マシンの)へのアクセスを許可しません。これを使用することを提案しているディレクトリのドキュメントを参照してください。

<Directory />
    Order Deny,Allow
    Deny from All
</Directory> 

これは、構成で期待どおりに機能するはずです。

<Directory /var/www/vhosts/bsah_dev/mysite/>
        DirectoryIndex index.html index.htm index.php
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>

(これは、最初に見つからないか見つかっindex.phpた場合にのみ使用されます。)index.htmlindex.htm

DirectoryIndexのドキュメントには、「サーバー構成、仮想ホスト、ディレクトリ、.htaccess」に配置できると記載されています(「コンテキスト」を参照)。また、ディレクティブ内でも機能します(このような値は、またはサーバーレベルDirectoryで検出される値をオーバーライドします)。VirtualHost

HTTPSセクションのこのルールは意味がありません。

<Directory /var/www/vhosts/bsah_dev/mysite>
        <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{HTTPS} !^on$ [NC]
                RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
        </IfModule>
</Directory>

書き換えルールを使用して、同等のhttps://URLにリダイレクトしています。ただし、このルールはSSLが有効になっているセクションにあるため、からではなく、からhttps://にリダイレクトします。https://http://

于 2011-06-20T19:39:24.000 に答える