2014-09-25 15:42:44 33549次浏览 17条回答 1 悬赏 0 金钱
   'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ], 

按照官方配的呢 一设置就报错

enter image description here

  • 回答于 2014-09-25 15:54 举报

    我用的是Yii 1.x版本,也遇到类似的问题,最后发现是我的url基本都是自己写的,比如href=“index.php?r=post/view”;这没有经过Yii自带的URL生成器处理,因此配置了URL美化组件无效。不知道你是否会是同样的问题。先分享下~~~

    1 条回复
    回复于 2014-09-25 15:55 回复

    最后我统一用了Yii::app()->createUrl(‘post/view’);方式生成URL,然后就解决了~至于版本2的是不是更深层的问题,小弟就不知道了~

  • 回答于 2014-09-25 16:05 举报

    hello world //代码测试

  • 回答于 2014-09-25 16:56 举报
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
    ],
    

    这是我的代码,没有错误。

  • 回答于 2014-09-25 17:07 举报

    我猜你一定是没有把 urlManager 配置在 components 里

  • 回答于 2014-09-25 17:09 举报

    正确的配置方法 是这样的

    'components' => [
    		'urlManager' => [
    			'enablePrettyUrl' => true,
    			'showScriptName' => false,
    			'rules' => [
    			],
    		],
            'user' => [
                'identityClass' => 'common\models\User',
                'enableAutoLogin' => true,
            ],
    ]
    
  • 回答于 2014-09-25 17:12 举报

    正确的配置方法 是这样的

    'components' => [
    	'urlManager' => [
    		'enablePrettyUrl' => true,
    		'showScriptName' => false,
    		'rules' => [
    		],
    	],
    	'user' => [
    		'identityClass' => 'common\models\User',
    		'enableAutoLogin' => true,
    	],
    ]
    
    3 条回复
    回复于 2014-09-25 17:23 回复

    嗯 谢谢大家 是没有配置到 components里面 我是从YII2开始学习的 很多不解

    回复于 2015-03-30 15:08 回复

    建议加一个yii2协作开发的小组, 大家都是根据兴趣在里面写点基础的东西

    回复于 2015-08-21 09:21 回复

    是不是yii2,不需要这样配?一加上反而不行?

  • 回答于 2014-09-26 15:11 举报

    引用来自 lan 的评论

    我猜你一定是没有把 urlManager 配置在 components 里
    果然是这样

  • 回答于 2014-09-29 17:39 举报

    \yii\helpers\Url::to()和\yii\helpers\Url::toRoute()是专门用来生成URL用的。

  • 回答于 2014-09-29 17:40 举报

    \yii\helpers\Url::to()\yii\helpers\Url::toRoute()是专门用来生成URL用的。

  • 回答于 2014-11-21 21:47 举报

    设置完了之后,图片文件什么的样式变化了啊?

  • 回答于 2015-08-12 10:12 举报

    我是配置在web.php中的component里了:$config = [

    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
    	'urlManager' => [
    		'enablePrettyUrl' => true,
    		'showScriptName' => false,
    		'rules' => [
    		],
    	],
    

    原本要访问:http://lx.com/yii/basic/web/index.php?r=activeform/index现在想简化成:http://lx.com/yii/basic/web/activeform/index找不到

  • 回答于 2015-08-30 17:37 举报

    在 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
    
    1 条回复
    回复于 2015-12-29 16:33 回复

    你好,你是怎么使地址直接指向web目录下的呢?

    觉得很赞
  • 回答于 2016-04-28 06:47 举报

    同样犯错,弄了一个多小时……学习了,谢谢~

  • 回答于 2016-05-13 14:41 举报

    我发现这个答案现在还不是很完整,再补充一点好了,经过我的研究,我发现这玩意光靠框架本身是没有办法独自完成工作的,需要在服务器做配置
    nginx配置的话需要加上

    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
        rewrite (.*) /index.php last;
    }
    

    如果是apache服务器的话 楼上的仁兄已经给出了答案了
    具体就是要忽视文件不存在的情况

    还有一点,通过阅读urlManager这个类的源码,enablePrettyUrl 这个参数是必须是true才可以

    2 条回复
    回复于 2016-07-26 11:23 回复

    我是apache服务器,安装上面配置了urlManage,添加了文件.htaccess,但是还是报错404.能告诉你是怎么解决的吗?我的访问地址是localhost+端口,跟这个有关系吗?

    回复于 2016-08-01 11:08 回复

    你看看apache的配置中有没有启用
    LoadModule rewrite_module modules/mod_rewrite.so
    要启用重写需要在apache的http.conf中 启用rewite mod

  • 回答于 2016-06-20 16:16 举报

    多谢关于apache的配置哈

  • 回答于 2016-08-12 12:23 举报

    下面我测试工作的, centos7+php5.6w+nginx1.63
    yii2 advanced 的版本

    xxx.xxx.xxx 换成你的域名
    主要是"location /" 里面的东西rewrite rules重要

    
    
       server {
            listen       80 default_server;
            #listen       [::]:80 default_server;
            server_name  xxx.xxx.xxx;
            root         /usr/share/nginx/html/yii-application/frontend/web/;
    		index index.php index.html index.htm;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
    			   location / {
    					   # Redirect everything that isn't a real file to index.php
    					   #try_files $uri $uri/ /index.php?$is_args$args;
    					   try_files $uri $uri/ /index.php?$args;
    
    						 #rewrite rules  #autoindex  on ;
    						 if (!-e $request_filename){
    							rewrite ^/(.*) /index.php?r=$1 last;
    						}
    					
    
    					   }
    
    
    		   location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # With php5-fpm:
                fastcgi_pass unix:/run/php-fpm/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
    		}
    
    	
    		
    	
    		location /phpMyAdmin {
    			alias /usr/share/nginx/html/phpMyAdmin;
    			index index.php index.html index.htm;
    		}
    		
    		location ~ /phpMyAdmin/.*\.php$ {
    			fastcgi_pass    127.0.0.1:9000;
    			fastcgi_index   index.php;
    			fastcgi_param   SCRIPT_FILENAME /usr/share/nginx/html/$uri;
    			include     fastcgi_params;
    		}
    
    		
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    
    
  • 回答于 2016-09-12 13:14 举报

    我的apache配置怎么还是不生效呢,重写已经开启,配置也已经完毕,同一个服务器,一个项目可以,另个一不可以,这是为什么

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
zjrman
实习生

zjrman

注册时间:2014-09-25
最后登录:2014-09-27
在线时长:0小时53分
  • 粉丝0
  • 金钱10
  • 威望0
  • 积分10

热门问题