如何在ZF2中删除/ public / from我的url

时间:2014-03-27 12:12:28

标签: zend-framework2

有什么方法可以从Zend framework 2的网址中删除 / public / 吗?

e.g:

www.mysite.com/public/controller/action

我希望它像:

www.mysite.com/controller/action

ZF2中是否有任何设置可以从url或任何htaccess方式删除public?

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式完成此操作 在根目录中创建index.php文件
放在index.php中的代码下面

<?php 
include 'public/index.php';  

在根目录中创建.htaccess文件:
将您在根目录

中创建的.htaccess文件中的代码放在下面
RewriteEngine On
RewriteRule .* index.php  

多数民众赞成 它会起作用,但问题是您在布局中加载的公共资源文件现在无法正常工作,因为在layout中您应该拥有这样的公共资源的URL: -

<!-- Le styles -->
        <?= $this->headLink(['rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon', 'href' => $this->basePath() . '/img/favicon.ico'])
            ->prependStylesheet($this->basePath('css/style.css'))
            ->prependStylesheet($this->basePath('css/bootstrap-theme.min.css'))
            ->prependStylesheet($this->basePath('css/bootstrap.min.css'))
        ?>

        <!-- Scripts -->
        <?= $this->headScript()
            ->prependFile($this->basePath('js/bootstrap.min.js'))
            ->prependFile($this->basePath('js/jquery-3.1.0.min.js'))
        ?>

将以上所有代码更改为以下代码
注意: - 在任何资产文件夹

之前加入公开信息
<!-- Le styles -->
            <?= $this->headLink(['rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon', 'href' => $this->basePath() . 'public/img/favicon.ico'])
                ->prependStylesheet($this->basePath('public/css/style.css'))
                ->prependStylesheet($this->basePath('public/css/bootstrap-theme.min.css'))
                ->prependStylesheet($this->basePath('public/css/bootstrap.min.css'))
            ?>

            <!-- Scripts -->
            <?= $this->headScript()
                ->prependFile($this->basePath('public/js/bootstrap.min.js'))
                ->prependFile($this->basePath('public/js/jquery-3.1.0.min.js'))
            ?>

我在任何资源文件夹之前都包含了 public 这是我一直遵循的最佳方式,但同时如果你不想这样做,还有另一种方式 在index.php中添加此行,该行位于站点根目录

define('PUBLIC_URL', true);

在layout.phtml文件的顶部

<?php 

    if (defined('PUBLIC_URL')) {
      $this->plugin('basePath')->setBasePath($this->basePath().'/public');
    } ?>

答案 1 :(得分:-1)

转到vhost配置文件,将DocumentRoot更改为:

DocumentRoot "path-to-zf-root/public"

并且不要忘记更改您的目录路径