/ / 404 Fehler für mod_rewrite unter Verwendung von SSL und MAMP - zend-framework, .htaccess, mod-rewrite, ssl, mamp

404 Fehler für mod_rewrite mit SSL und MAMP - zend-framework, .htaccess, mod-rewrite, ssl, mamp

Ich baue eine App in Zend Framework an derMoment und alles lokal testen. Ich habe Mamp Pro als meinen Webserver und ich habe ein selbstsigniertes SSL, das scheint zu funktionieren. Mein Problem kommt, wenn ich versuche, mod_rewrite zu tun - ich bekomme nur 404 Seiten.

So wie ich Dinge eingerichtet habe (was vielleicht nicht der beste Weg ist ...)


In Mamp habe ich zwei Virtualhosts eingerichtet, die beide auf das gleiche Webverzeichnis zeigen (webroot / public /):

  • secure.myapp.com
  • myapp.com

In meinem öffentlichen Verzeichnis sind meine index.php Datei und meine .htaccess Datei. Der Inhalt der .htaccess Datei ist:

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]

Wenn ich besuche http://myapp.com Alles verläuft so wie es sollte mit dem mod_rewrite. Aber wenn ich gehe https://secure.myapp.com Die Indexseite ist in Ordnung, aber das URL-Routing funktioniert nicht mehr und es scheint so zu sein, dass die .htaccess-Datei ignoriert wird.

In meiner ssl.conf habe ich folgendes:

<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 [email protected]
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>

Hat jemand dazu irgendwelche Ideen? Ich werde der Hilfe so dankbar sein, da sie meine Entwicklung ernsthaft behindert!

Antworten:

0 für die Antwort № 1

Nun, ich bin ziemlich sicher, dass ich das funktioniert habe. Ein großes Problem, das ich hatte, ist, dass Mamp die vhosts.conf nicht als zugängliche Datei speichert. Stattdessen ist dies eine Alias-Anwendungsdatei.

Ich denke, was passiert ist, dass die virtuellen Geister sindalle dynamisch erstellt alle auf dem Standard-HTTP-Port, in meinem Fall 80. Allerdings musste ich auf den Port 433 vhost Config zugreifen können, um FileInfo zu aktivieren. Meine Abhilfe besteht darin, meine .htaccess-Datei zu entfernen und die folgende ALL in meine ssl.conf-Datei zu stecken.

<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 [email protected]
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>

Ich musste DOCUMENT_ROOT vor meiner Datei hinzufügenund Verzeichnisprüfungen und einen Schrägstrich vor index.php. Wenn ich das in ein "Verzeichnis" hätte einfügen können, dann hätte ich diese Änderungen wahrscheinlich vermieden, aber Apache wird nicht neu gestartet, wenn ich diesen Parameter hinzufüge.

Das einzige, was ich nicht versucht habe, war das Hinzufügen der Informationen zu MAMPs httpd.conf, aber ich habe das Gefühl, dass die gleichen Einschränkungen vorhanden sein können.