404 di errore per mod_rewrite utilizzando SSL e MAMP
-
16-09-2019 - |
Domanda
Sto costruendo un app in Zend Framework in questo momento e testare il tutto a livello locale. Ho Mamp Pro come il mio server web e ho uno SSL self-signed, che tutto sembra funzionare. Il mio problema viene quando provo a fare mod_rewrite -. Ho appena ottenere 404 pagine
Il modo in cui ho impostato le cose (che non può essere il modo migliore ...)
In Mamp Ho 2 VirtualHosts impostati sia che punta alla stessa directory web (webroot / public /):
- secure.myapp.com
- myapp.com
Nel mio elenco pubblico è il mio file index.php e il mio file .htaccess. Il contenuto del file .htaccess sono:
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]
Quando visito http://myapp.com percorsi tutto come si deve utilizzare il mod_rewrite. Ma quando vado a https://secure.myapp.com la pagina indice va bene, ma si ferma URL di routing lavorare e sembra essere che il file .htaccess viene ignorato.
Nel mio ssl.conf ho il seguente:
<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>
Qualcuno ha qualche idea su questo? Sarò tremendamente apprezzato l'aiuto come è seriamente ostacolare il mio sviluppo!
Soluzione
Beh, io sono abbastanza sicuro che ho ottenuto questo lavoro. In sostanza, un grosso problema che ho avuto è che Mamp non memorizza vhosts.conf come un file accessibile. Invece si tratta di un file di applicazione alias.
Credo che ciò che accade è che i VirtualHosts sono creati tutti in modo dinamico tutti sulla porta HTTP standard, nel mio caso 80. Tuttavia avevo bisogno di essere in grado di accedere al vhost config porta 433 per consentire FileInfo. Così la mia soluzione è quella di abbandonare il mio file .htaccess e bastone il seguente ALL nel mio file 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>
ho dovuto aggiungere DOCUMENT_ROOT davanti al mio di file e controlli di directory, e una barra di fronte index.php. Se avessi potuto mettere questo in un "Directory", allora credo che avrei potuto evitare questi cambiamenti, ma Apache non si riavvia quando aggiungo questo parametro.
L'unica cosa che non ho provato è stata l'aggiunta di informazioni di httpd.conf di MAMP, ma ho la sensazione che le stesse restrizioni possono essere a posto.