문제

현재 Zend Framework에서 앱을 구축하고 로컬로 테스트하고 있습니다. 나는 내 웹 서버로서 Mamp Pro를 가지고 있으며 모두 작동하는 것처럼 보이는 자체 서명 된 SSL이 있습니다. 내 문제는 mod_rewrite를하려고 할 때 발생합니다. 404 페이지 만 얻습니다.

내가 물건을 설정하는 방식 (최선의 방법이 아닐 수도 있습니다 ...)


MAMP에는 동일한 웹 디렉토리 (Webroot/Public/)를 가리키는 2 개의 VirtualHosts가 있습니다.

  • 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>

아무도 이것에 대한 아이디어가 있습니까? 내 발전을 진지하게 방해하고 있기 때문에 도움에 감사 할 것입니다!

도움이 되었습니까?

해결책

글쎄, 나는이 일을했다고 확신한다. 기본적으로, 내가 가진 큰 문제는 MAMP가 vhosts.conf를 액세스 가능한 파일로 저장하지 않는다는 것입니다. 대신 이것은 별칭 응용 프로그램 파일입니다.

나는 VirtualHosts가 모두 표준 HTTP 포트에서 동적으로 생성된다고 생각합니다. 그러나 80은 포트 433 Vhost 구성에 액세스하여 fileInfo를 활성화 할 수 있어야합니다. 따라서 내 해결 방법은 내 .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 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에 정보를 추가하는 것이지만, 같은 제한이있을 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top