简体   繁体   中英

How to remove index.php in url in zend framework

I have recently installed a zend framework website from one server to another server.

eg: http://localhost/test/html ----  This is my website url

where test is my folder---- where all the zend framework files are kept there.... But my index.php file is under html folder.... and I am also below display the code for index.php....

My website runs successfully with this link "http://localhost/test/html"

where test is folder

This my below .htaccess code

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

This is my index.php file under test folder

set_include_path('.'
        . PATH_SEPARATOR . get_include_path()
        . PATH_SEPARATOR . '../library'

//        . PATH_SEPARATOR . '../application/classes/'
//        . PATH_SEPARATOR . '../application/classes/forms/'
//        . PATH_SEPARATOR . '../application/models/'

          . PATH_SEPARATOR . '../application/default/classes/'
        . PATH_SEPARATOR . '../application/default/classes/forms/'
        . PATH_SEPARATOR . '../application/default/models/'
        . PATH_SEPARATOR . '../application/bo/classes/'
        . PATH_SEPARATOR . '../application/bo/classes/forms/'
        . PATH_SEPARATOR . '../application/bo/models/'
        . PATH_SEPARATOR . '../application/bo/controllers/'
        . PATH_SEPARATOR . '../application/helpers'
);

require_once "../library/Zend/Loader/Autoloader.php";
//session_start();
define("SITE_PATH", "http://localhost/test/");
define("SITE_BO_PATH", "http://localhsot/test/bo/");
define("URL", "/html/");
define("BO_URL", "/html/bo/");
define("BASE_URL", "/html/");
define("LIB_URL", "/library/");
define("IMG_URL", BASE_URL . "public/img/");
define("IMG_BO_URL", BASE_URL . "public/img_bo/");

@Zend_Loader::registerAutoload();

$options = array(
    'layout' => 'layout',
    'layoutContent' => '../application/views/layouts/',
    'contentKey' => 'content');


new DbInitialize();


date_default_timezone_set("Europe/Berlin");

Zend_Layout::startMvc($options);

Zend_Session::setOptions(array('save_path'=>'/vlk_session'));
if(isset($_COOKIE["Zend_Auth_RememberMe"]) && $_COOKIE["Zend_Auth_RememberMe"] !== false){
    Zend_Session::rememberMe("5302000");
    setcookie("Zend_Auth_RememberMe", false, time(), "/");
}



if(!Zend_Session::isStarted()){

    Zend_Session::start();

}



$sessionUUID = new Zend_Session_Namespace("vlk_jsessionId");
$sessionUUID->setExpirationSeconds(6000000);
if(!isset($sessionUUID->UUID)) {
    $sessionUUID->UUID = uniqid('vlk_');
}


$options = array(
    "adapter" => 'csv',
    "content" => 'languages/en.csv',
    "locale" => "en"
);

$translate = new Zend_Translate($options);
$_lingua = "it";

if(isset($_COOKIE["lingua"]) && ($_COOKIE["lingua"] == "it" || $_COOKIE["lingua"] == "en")){
    $_lingua = $_COOKIE["lingua"];
}
$translate->getAdapter()->setLocale($_lingua);
Zend_Registry::set('Zend_Translate', $translate);
$controller = Zend_Controller_Front::getInstance();
$_router = $controller->getRouter();


$_router->addRoute('backoffice',new Zend_Controller_Router_Route_Static('business',array('module' => 'bo','controller' => 'index','action' => 'index')));

$_router->addRoute('fanpage',new Zend_Controller_Router_Route_Static('business/fanpage',array('module' => 'bo','controller' => 'facebook','action' => 'index')));

$_router->addRoute('profile',new Zend_Controller_Router_Route_Static('business/profile',array('module' => 'bo','controller' => 'useredit','action' => 'profile')));

$_router->addRoute('video',new Zend_Controller_Router_Route_Static('business/video',array('module' => 'bo','controller' => 'gestionevideo','action' => 'lista')));





$fpcFrontendOptions = array(
                'lifetime' => 7200,
                'debug_header' => false,
                'regexps' => array(
                    '^/index/index/' => array('cache' => true)
                )
            );


            $fpcBackendOptions = array(
                'cache_dir' => 'tmp/'
            );
            $fullPageCache = new Zend_Cache_Frontend_Page($fpcFrontendOptions);
            $zcb = new Zend_Cache_Backend($fpcBackendOptions);
            $fullPageCache->setBackend($zcb);
            //echo "TEST CACHE";
            $fullPageCache->start();

//$controller->setControllerDirectory("../application/controllers");

$controller->setControllerDirectory(array(
            "default" => "../application/default/controllers",
            "bo" => "../application/bo/controllers"
            ));

$controller->throwExceptions(true); // should be turned on in development time 
// run!
$controller->dispatch();



?>

But when I call my controller eg. http://localhost/test/index.php/cp eg. http://localhost/test/index.php/cp I just want to remove the index.php file. in .htaccess file or in index.php file in zend framework.

Plz provide me any suggestion.

Omega, is the docroot of your vhost? Or is test a folder off of your vhost?

It just like in Zend tutorial. You need to activate mod_rewrite in Apache and add Virtual Hosts like this:

<VirtualHost *:80>
  ServerName mypage.dev
  DocumentRoot /path/to/quickstart/public
  SetEnv APPLICATION_ENV "development"
  <Directory /path/to/quickstart/public>
    DirectoryIndex index.php
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM