Yii2 Pretty Url在Share Hosting(基本模板)中不起作用

时间:2017-09-24 14:57:42

标签: .htaccess url-rewriting yii2

我试图在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>',

                ],
    ],

1 个答案:

答案 0 :(得分:0)

大多数共享主机禁用htaccess文件中的某些指令以防止出现某些安全问题。如果在您的htaccess文件中找到受限制的指令,您将收到500错误页面。

如果删除Options +FollowSymLinks指令,很可能一切都会有效。

此外,您可以查看apache错误日志以获取更多信息。