我已经使用yii2基本应用程序建立了一个站点,一切都在我的localhost上工作正常,我刚刚通过克隆来自/public_html
文件夹更新的作曲家的根目录上的git的repo来部署我的应用程序并运行迁移,在我添加
public_html/.htaccess
和
public_html/web/.htaccess
具有以下规则集的文件
的public_html / htaccess的
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
的public_html /网络/ htaccess的
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
config/web.php
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'baseUrl' => sprintf(
"%s://%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME']
),
'rules' => [
'' => 'site/index',
'tos' => 'site/tos',
'privacy-policy' => 'site/privacy',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
],
],
无论我做什么,我总是登陆主页我在页脚中有3个链接条款和条件联系和隐私政策,它们都显示主页,尽管地址栏中显示的网址被{{正确地转换了1}}是正确的,但加载的视图总是主页你。
注意:我没有像在Yii2指南中那样克隆了public_html文件夹之外的repo,而是我已经在UrlManager
内克隆了git repo,我认为它不可行,因为高级应用程序也能正常工作克隆在public_html
内而不是外面
答案 0 :(得分:1)
Yii 2基本应用必须放在public_html
目录之外,如文档中所述,您无法在public_html
内进行设置,而是必须将web
重命名为{{1然后将其克隆到public_html
目录之外,以便重命名的文件夹public_html
内容覆盖它。
答案 1 :(得分:1)
您可以使用symlinks。您可以将项目放在任何位置,只创建符号链接到托管强制的目录。例如,将项目放在~/domains/example.com/project
中并创建符号链接到public_html
目录。
cd ~/domains/example.com
# remove old public_html directory
mv public_html old_public_html
# create symlink for webroot
ln -s ./project/web public_html
无需更改项目结构,也无需更改扭曲的重写规则。