php - 如何使用/web 以外的 web 根目录部署 yii2

标签 php .htaccess yii2 yii-url-manager

我正在做一个 yii2 项目,我想将它部署到一个 apache 服务器上,整个网站应该存在于/public_html 目录中,而/public_html 是该主机的网络根目录。问题在于 yii2 期望 web 根目录为/web,并且它期望大多数站点层次结构存在于/web 目录之外。

我宁愿不必将 webroot 更改为/public_html/web,对于 future 的项目,这可能不是一个选项。那么,有没有一种方法可以将整个网站层次结构放在/public_html 中,并且网站仍然可以正常工作?

我尝试创建一个包含以下内容的/public_html/.htaccess 文件:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !web/
    RewriteRule (.*) /web/$1 [L]

一开始这似乎工作正常。/public_html/web 之外的任何内容都不可访问,/web 子目录中的文件,例如/web/js/signup.js 可以通过 url http://localhost/js/signup.js 访问。 , 但这导致我的路由规则(在本地系统上设置,我可以让 Web 根目录指向/web)不再被识别。

因此,我很乐意使用 .htaccess 路由的替代方案,或者关于如何修复路由规则以使 .htaccess 路由正常工作的建议。

编辑澄清

我有一个托管服务提供商,其网络根目录是 ~/public_html 。 Yii 有文档说明您可以将 www 重命名为 public_html,并且将通常位于/www 之外的所有内容都放在 ~ 中,以及 Linux 通常放在 ~ 中的各种点文件和用户文档。我更愿意将所有与站点相关的目录放在一起(在 webroot 下)。

作为替代方案,也可以采用双目录结构,如下所示:

~/
 |--- (Various dotfiles and subdirectories unrelated to the web site)
 |--- yii - Contains all subfolders that should be outside of the web root
      |--- commands
      |--- config
      |--- controllers 
      |--- (etc...)
 |--- public_html - Contains everything that can be within the web root.
      |--- (etc...)

最佳答案

这个问题已经被问了很多次,以至于他们制作了一个 page在 Yii2 文档中找到它。

这个问题我个人回答了太多次记不清了。

关于php - 如何使用/web 以外的 web 根目录部署 yii2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33261850/

相关文章:

php - 在 magento 中点击计数器

php - 检查用户登录数据的SQL代码

http - 使用 mod_rewrite 后找不到图像

wordpress - 如何: Getting SSL to work on Wordpress without 404 error

javascript - yii2:处理 gridview 的选定行不起作用 - ajax 帖子为空

php - Google Api PHP 客户端库

php - 作为 Apache 模块运行的 PHP 中用于 PostgreSQL 数据库的 pg_connect() 的替代方法

.htaccess RewriteEngine 不工作

php - Yii 2 嵌套形式

mysql - 如何将rest api和yii2中两个数据库表的关系数据显示为json格式