有什么方法可以从Zend framework 2
的网址中删除 / public / 吗?
e.g:
www.mysite.com/public/controller/action
我希望它像:
www.mysite.com/controller/action
ZF2中是否有任何设置可以从url或任何htaccess方式删除public?
答案 0 :(得分:0)
您可以通过以下方式完成此操作
在根目录中创建index.php文件
放在index.php中的代码下面
<?php
include 'public/index.php';
在根目录中创建.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"
并且不要忘记更改您的目录路径