如何在Yii2中使用漂亮的URL访问控制器

时间:2016-08-02 08:32:22

标签: .htaccess routes yii2 pretty-urls

这可能是一个愚蠢的问题,但我不能这样做。我已经搜索了很长时间,但仍然没有找到任何东西。

我正在使用Yii2高级模板,我想删除“frontend / web /”和“index.php”,因此它会有一个漂亮的URL,例如:www.mywebsite.com/signin而不是www.mywebsite.com/frontend/web/index.php?r=site/signin

我在根文件夹中有这个htaccess:

Options -Indexes

<IfModule mod_rewrite.c> 
  RewriteEngine on

  RewriteCond %{REQUEST_URI} !^public
  RewriteRule ^(.*)$ frontend/web/$1 [L] 
</IfModule>

# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>

# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]

此前端文件夹中的htacccess:

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

Options -Indexes

最后,这是UrlManager的配置:

use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());

return [
    'urlManager' => [
        'baseUrl' => $baseUrl,
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            'signin' => 'site/signin',
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ]
    ]
]

“Signin”是前端文件夹中SiteController.php中的一个操作。我该如何访问它?我尝试过www.mywebsite.com/signin,www.mywebsite.com/site/signin,但失败了。 htaccess或配置中的设置有问题吗?任何帮助将不胜感激。

0 个答案:

没有答案