使zend框架2在没有虚拟主机的情况下工作

时间:2013-12-31 14:06:49

标签: .htaccess zend-framework2 vhosts

我使用Zend Framework 2完成了我的第一个Web应用程序,我即将把它放到网上。但是web主机可能不允许我更改我的vhost配置!允许.htaccess文件。

Public文件夹中的.htaccess文件是这样的:

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

我的文件夹目录结构是这样的:

 -ProjectName  
  -config
  -module
  -vendor
    - zendframework
  -public
    - css
    - img
    - JS
    - index.php 

Index.php文件:

<?php
/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
chdir(dirname(__DIR__));

// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
}

// Setup autoloading
require 'init_autoloader.php';

// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run(); 

所以我的问题是:如何使用.htaccess文件设置我的ZF2应用程序?

此外,我想在我的网站www.example.com运行时调用默认的“Front”模块调用。

您的回答将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎需要启用mod_rewrite模块并重新启动Apache。

Zend Framework 2要求您启用Apache的* mod_rewrite *模块。 * mod_rewrite *模块用于根据某些规则重写请求的URL, 将网站用户重定向到另一个网址。

在Debian或Ubuntu Linux中

要启用Apache mod_rewrite模块,请键入以下命令:

cd /etc/apache2/mods-enabled

sudo ln -s ../mods-available/rewrite.load ./rewrite.load

上面的命令在mods-enabled目录中创建了一个符号链接, 这样您就可以在现代版本的Apache Web服务器中启用模块。

最后,重新启动Apache Web服务器以应用您的更改。

I&GT; Linux中的符号链接类似于Windows中的快捷方式。

在Fedora,CentOS或Red Hat Linux中

在这些Linux发行版中,默认情况下启用mod_rewrite,因此您无需这样做 任何东西。

重新启动Apache Web服务器

编辑配置文件后,通常必须重新启动Apache HTTP Server 应用您的更改。您可以使用以下命令(在Debian或Linux Ubuntu中)执行此操作:

sudo service restart apache2

或以下(在Fedora,CentOS或Red Hat中):

sudo service restart httpd

因此,您应该看到如下输出:

* Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified 
domain name, using 127.0.0.1 for ServerName
  ... waiting apache2: Could not reliably determine the server's fully 
qualified domain name, using 127.0.0.1 for ServerName                   [OK]