TMo*_*gan 5 php .htaccess yii2 yii-url-manager
我正在研究yii2项目,并希望将其部署到apache服务器,其中整个网站都应该位于/ public_html目录中,并且/ public_html是该主机的Web根目录。问题在于yii2期望Web根目录为/ web,并且期望大多数站点层次结构都位于/ web目录之外。
我希望不必将webroot更改为/ public_html / web,对于将来的项目,这可能不是一个选择。因此,有没有办法将整个网站层次结构放置在/ public_html中,并且仍然使网站正常工作?
我尝试创建具有以下内容的/public_html/.htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
Run Code Online (Sandbox Code Playgroud)
首先,这似乎正常工作。/ 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...)
Run Code Online (Sandbox Code Playgroud)