如何在nginx服务器上使用yii2创建Pretty / Clean URL

时间:2015-04-24 12:10:43

标签: yii yii2 yii2-advanced-app yii-url-manager yii2-user

我在 nginx 服务器上使用yii2.0.3的基本模板,并在web / theme / demo下有一个演示主题。

我已为主题配置了web.php,如下所示。

'components' => [
    'view' => [
    'theme' => [
    'pathMap' => ['@app/views' => 'theme/demo'],
    'baseUrl'   => 'theme/demo'
    ]
],

一切正常。我想从主页的网址以及其他网页中删除 web / index.php 。 由于nginx不支持 .htaccess ,我在 web.php 文件

上简单地说明了以下规则
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [],
    ],

我没有在' rules '中添加任何内容..所以干净的网址可能无法正常工作。 请帮我从模板的每个页面中删除 / web /

2 个答案:

答案 0 :(得分:2)

检查Nginx配置中的服务器块如下:

parent

答案 1 :(得分:1)

这是来自nginx网站的官方配置,专用于Yii,所以你知道它是正确的方式(似乎是Yii1,但我们可以为Yii2调整一些元素:

server {
        server_name domain.tld;

        root /var/www/html;
        index index.html index.php;

        # BEGIN Yii Specific location configurations

        # SEF URLs for sampleapp.
        location /{
         rewrite ^/(.*)$ /index.php?r=$1;
        }

        location ~ \.(js|css|png|jpg|jpeg?|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
                try_files $uri =404;
        }

        # END Yii Specific specific location configurations.

        # IMPORTANT: THIS SECTION MIGHT BE DIFFERENT DEPENDING ON IF
        # YOU USE PHP-FPM, PHP-FASTCGI, ETC
        location ~ \.php$ {
                root            /var/www/html;
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                include         fastcgi_params;
        }
}