我试图在Share Hosting环境中使用Yii2(基本模板)部署一个小项目构建。当地的一切都很好。 主机服务器如下面的根目录:
/
---logs
---index.html
阅读Yii2的doc后。然后我删除文件 index.html 并将我的项目文件夹上传到根目录。它现在看起来像这样:
/
---logs
---assets
---commands
---config
---controllers
--- ...
---views
---web
--- ...
在尝试网站后,我得到一个空白页面。然后我决定在主机服务器的根目录中创建一个htaccess文件来指向 web 文件夹,就像这里一样
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
在此之后我可以很好地获得索引页面
www.example.com
当我尝试访问时,和我得到一个空白页(使用url prettyUrl激活)
www.example.com/articles/list
但是当我停用prettyUrl时,它的工作就像例如
www.example.com/web/index.php?r=articles/list
网络文件夹中的.htaccess是这样的:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
# Disable Directory Browsing
Options All -Indexes
并且url规则在web.php文件中设置,如下所示:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'baseUrl' => '/',
'rules' => [
...
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
],
答案 0 :(得分:0)
大多数共享主机禁用htaccess文件中的某些指令以防止出现某些安全问题。如果在您的htaccess文件中找到受限制的指令,您将收到500错误页面。
如果删除Options +FollowSymLinks
指令,很可能一切都会有效。
此外,您可以查看apache错误日志以获取更多信息。