2

現在、Zend Framework でアプリを構築し、すべてローカルでテストしています。私は Web サーバーとして Mamp Pro を使用しており、自己署名 SSL を使用していますが、これはすべて機能しているようです。私の問題は、mod_rewrite を実行しようとしたときに発生します。404 ページしか表示されません。

私が物事をセットアップする方法(これは最良の方法ではないかもしれません...)


Mamp では、同じ Web ディレクトリ (webroot/public/) を指す 2 つの仮想ホストをセットアップしています。

  • secure.myapp.com
  • myapp.com

私の公開ディレクトリには、index.php ファイルと .htaccess ファイルがあります。.htaccess ファイルの内容は次のとおりです。

SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

http://myapp.comにアクセスすると、すべてが mod_rewrite を使用してルーティングされます。しかし、https://secure.myapp.comにアクセスすると、インデックス ページは問題ありませんが、URL ルーティングが機能しなくなり、.htaccess ファイルが無視されているようです。

私のssl.confには次のものがあります:

<IfModule mod_ssl.c>

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/Applications/MAMP/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/Applications/MAMP/logs/ssl_mutex

<VirtualHost _default_:443>

SSLEngine on
DocumentRoot "/webroot/public"
ServerName secure.myapp.com
ServerAdmin you@example.com
ErrorLog /Applications/MAMP/logs/ssl_error_log
TransferLog /Applications/MAMP/logs/ssl_access_log

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /Applications/MAMP/conf/apache/ssl_cert/server.crt
SSLCertificateKeyFile /Applications/MAMP/conf/apache/ssl_key/server.key

CustomLog /Applications/MAMP/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

</IfModule>

誰かこれについて何か考えがありますか?私の開発を真剣に妨げているので、私は助けにとても感謝しています!

4

1 に答える 1

0

まあ、私はこれが機能していると確信しています。基本的に、私が抱えていた大きな問題は、Mamp が vhosts.conf をアクセス可能なファイルとして保存しないことです。代わりに、これはエイリアス化されたアプリケーション ファイルです。

仮想ホストはすべて、標準の http ポート (私の場合は 80) ですべて動的に作成されると思います。ただし、FileInfo を有効にするには、ポート 433 の vhost 構成にアクセスできる必要がありました。したがって、私の回避策は、.htaccess ファイルを捨てて、次の ALL を ssl.conf ファイルに貼り付けることです。

<IfModule mod_ssl.c>

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/Applications/MAMP/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/Applications/MAMP/logs/ssl_mutex

<VirtualHost mysite.com:443>

    SSLEngine on
    DocumentRoot /webroot/secure
    ServerName mysite.com
    ServerAdmin you@example.com
    ErrorLog /Applications/MAMP/logs/ssl_error_log
    TransferLog /Applications/MAMP/logs/ssl_access_log

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /Applications/MAMP/conf/apache/ssl_cert/server.crt
    SSLCertificateKeyFile /Applications/MAMP/conf/apache/ssl_key/server.key

    CustomLog /Applications/MAMP/logs/ssl_request_log \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    DirectoryIndex index.php

        <IfModule mod_rewrite.c>
            RewriteEngine on
            RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -s [OR]
            RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -l [OR]
            RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d

            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ /index.php [NC,L]

            RewriteLog /Applications/MAMP/logs/ssl_rewrite_log
            RewriteLogLevel 3
        </IfModule>

</VirtualHost>

</IfModule>

ファイルとディレクトリのチェックの前に DOCUMENT_ROOT を追加し、index.php の前にスラッシュを追加する必要がありました。これを「ディレクトリ」に入れることができれば、これらの変更を回避できたと思いますが、このパラメーターを追加しても Apache は再起動しません。

私が試みなかった唯一のことは、MAMP の httpd.conf に情報を追加することでしたが、同じ制限が適用されている可能性があると感じています。

于 2009-09-24T20:12:42.877 に答える