Вопрос

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

То, как я все настроил (что, возможно, не лучший способ...)


В Mamp у меня есть 2 виртуальных хоста, которые указывают на один и тот же веб-каталог (webroot/public/):

  • 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 как доступный файл.Вместо этого это файл приложения с псевдонимом.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top