2009-09-24 7 views
2

В настоящее время я создаю приложение в Zend Framework и проверяю его локально. У меня есть Mamp Pro как мой веб-сервер, и у меня есть самоподписанный SSL, который, похоже, работает. Моя проблема возникает, когда я пытаюсь сделать mod_rewrite - я просто получаю 404 страницы.Ошибка 404 для mod_rewrite с использованием SSL и MAMP

Путь у меня есть вещи созданы (которые не могут быть наилучшим способом ...)


В MAMP У меня 2 VirtualHosts настроенные как указывают на тот же веб-каталог (Webroot/государственные /):

  • secure.myapp.com
  • myapp.com

В моей общественной директории мой Ind ex.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 [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> 

Кто-нибудь есть какие-либо идеи по этому поводу? Я буду очень благодарен за помощь, поскольку это серьезно мешает моему развитию!

+0

Вы установили 'AllowOverride FileInfo' для этого каталога? И вы заглянули в журнал ошибок? – Gumbo

+0

Gumbo, я думаю, что моя проблема в том, что я не могу установить какие-либо переопределения Directory, используя MAMP. Мне нужно установить в VirtualHost, прослушивая порт 443, но когда я пытаюсь сделать это, MAMP не позволит мне запустить Apache. Я думаю, что я работал над этим ... См. Мой ответ. – wiseguydigital

ответ

0

Ну, я уверен, что у меня это работает. В основном, большая проблема, с которой я столкнулся, заключается в том, что Mamp не хранит vhosts.conf в качестве доступного файла. Вместо этого это файл с псевдонимом.

Я думаю, что происходит то, что виртуальные хосты все динамически создаются на стандартном http-порту, в моем случае 80. Однако мне нужно было иметь доступ к конфигурации порта 433 vhost для включения FileInfo. Таким образом, мое обходное решение состоит в том, чтобы вырезать файл .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 [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> 

мне пришлось добавить DOCUMENT_ROOT перед моим файлом и проверки каталогов, и слэшем перед index.php. Если бы я мог поместить это в «Справочник», то, я думаю, я мог бы избежать этих изменений, но Apache не будет перезагружаться при добавлении этого параметра.

Единственное, что я не пробовал, это добавить информацию в httpd.conf MAMP, но у меня такое чувство, что могут быть и те же ограничения.

Смежные вопросы