404部署zend应用程序之后

I've deployed a zend application on a local server(ubuntu), the default page works fine, but all the rest of application throw the 404 not found page.

my index.php

    // Define path to application directory defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(), )));

/** Zend_Application */ require_once 'Zend/Application.php';

// Create application, bootstrap, and run $application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap()

            ->run();

application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.params.displayExceptions = 0



resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""
resources.frontController.params.prefixDefaultModule = "1"

resources.db.adapter = mysqli
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ""
resources.db.params.dbname = assalam

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

_initAutoLoader function in the Bootsrap file

protected function _initAutoLoad(){
        $modelLoader = new Zend_Application_Module_Autoloader(array(
                               'namespace'=>'',
                               'basePath'=>APPLICATION_PATH . '/modules/default'
                             ));
        if(Zend_Auth::getInstance()->hasIdentity()){
            Zend_Registry::set('role',Zend_Auth::getInstance()->getStorage()->read()->role);

        }else {
            Zend_Registry::set('role','Visiteurs');
        }

        $this->_acl = new Model_UsersAcls();
        $this->_auth = Zend_Auth::getInstance();

        $fc = Zend_Controller_Front::getInstance();
        $fc->registerPlugin(new Plugin_AccessCheck($this->_acl));

        return $modelLoader;
     }

the apache2.conf contains

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

the htaccess file contains

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

the virtual host code

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/

  <Directory /var/www/>
      Options +FollowSymlinks +SymLinksIfOwnerMatch
      AllowOverride All
  </Directory>
</VirtualHost>

Do you have your htaccess file set up?

Does your server allow htaccess files to be run (check that AllowOverride is set to All in your server configuration file).

As an example, here is the htaccess file from one of my projects:

Options +FollowSymLinks 
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)/(.*)$ index.php [NC,L]
RewriteRule ^(.*)/(.*)/(.*)$ index.php [NC,L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)$ index.php [NC,L]
RewriteRule ^.*$ index.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !^(.*)\.css$
RewriteCond %{REQUEST_FILENAME} !^(.*)\.js$
RewriteCond %{REQUEST_FILENAME} !public/gateway/(.*)$
RewriteRule ^.*$ - [NC,L]

How did you deploy it? You used Zend Server Deployment? Have you setup a virtual host? What URL are you calling? What is the projects path?

Please check if you have a virtual host, if not create something like this example:

<VirtualHost *:80>
  ServerName helloWorld.dev
  DocumentRoot /Users/myuser/Sites/HelloWorld/public

  <Directory /Users/myuser/Sites/HelloWorld/public> 
      Options +FollowSymlinks +SymLinksIfOwnerMatch
      AllowOverride All
  </Directory>
</VirtualHost>

Also on your hosts files

127.0.0.1       helloWorld.dev

I would recomend to check the folder permissions too

myuser:HelloWorld myuser$ ll
total 0
drwxr-xr-x  8 myuser  staff   272B Jan  6 11:54 application
drwxr-xr-x  3 myuser  staff   102B Jan  6 11:54 docs
drwxr-xr-x  4 myuser  staff   136B Dec 28 20:54 library
drwxr-xr-x  4 myuser  staff   136B Jan  6 11:54 public
drwxr-xr-x  6 myuser  staff   204B Jan  6 11:54 tests
myuser:HelloWorld myuser$ pwd
/Users/myuser/Sites/HelloWorld
myuser:HelloWorld myuser$ 

Add the following definition on the file /etc/apache2/users/myuser.conf. If this file don't exist create it

<Directory "/Users/myuser/Sites/">
     Options Indexes MultiViews
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>