【发布时间】:2017-09-24 14:57:41
【问题描述】:
我正在尝试在共享托管环境中部署一个使用 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
web文件夹中的.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>',
],
],
【问题讨论】:
-
我要做的第一件事是在
.htaccess文件中引入一些垃圾,以检查它是否被读取。如果是,则在访问任何页面时都会弹出错误 500 -
@gmc 我做到了,并且读取了 .htaccess 文件。
标签: .htaccess url-rewriting yii2