404 erro para mod_rewrite usando SSL e MAMP
-
16-09-2019 - |
Pergunta
Eu estou construindo um aplicativo no Zend Framework no momento e testar tudo localmente. Eu tenho Mamp Pro como meu servidor web e eu tenho um SSL auto-assinado que tudo parece funcionar. Meu problema surge quando eu tento fazer mod_rewrite -. Acabei de receber 404 páginas
A maneira que eu tenho coisas criadas (que pode não ser a melhor maneira ...)
Em Mamp tenho 2 VirtualHosts configurar ambos apontando para o mesmo diretório web (webroot / public /):
- secure.myapp.com
- myapp.com
No meu diretório público é meu arquivo index.php e meu arquivo .htaccess. O conteúdo do arquivo .htaccess são:
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 eu visito http://myapp.com tudo rotas como deve usar o mod_rewrite. Mas quando vou para https://secure.myapp.com a página do índice é bom, mas URL roteamento paradas trabalhando e parece ser que o arquivo .htaccess está sendo ignorada.
Na minha ssl.conf eu tenho a seguinte:
<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>
Alguém tem alguma idéia sobre isso? Eu vou ser muuuito apreciam a ajuda, como é dificultar seriamente o meu desenvolvimento!
Solução
Bem, eu tenho certeza que eu tenho este trabalho. Basicamente, um grande problema que tive é que Mamp não armazena vhosts.conf como um arquivo acessível. Em vez este é um arquivo de aplicativo alias.
Eu acho que o que acontece é que os VirtualHosts são criados todos os dinamicamente todos na porta http padrão, no meu caso 80. No entanto eu precisava para ser capaz de acessar o vhost de configuração porta 433 para permitir FileInfo. Assim, a minha solução é abandonar meu arquivo .htaccess e cumpri o seguinte ALL no meu arquivo 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>
Eu tive que adicionar DOCUMENT_ROOT na frente do meu arquivo e verifica diretório, e uma barra na frente de index.php. Se eu poderia ter colocado isso em um "Diretório", então eu acho que eu poderia ter evitado essas mudanças, mas Apache não irá reiniciar quando eu adicionar esse parâmetro.
A única coisa que eu não tente foi acrescentando a informação de MAMP de httpd.conf, mas eu tenho um sentimento as mesmas restrições podem estar no lugar.