从网址中省略一部分

时间:2017-10-12 12:56:41

标签: php .htaccess codeigniter url url-rewriting

我在我的网站上使用Codeigniter,我希望我的单个产品网址像thi

http://sitename.com/category-slug/product-slug

所以我在route.php注册了一条路线$route['([a-zA-Z0-9-]+)'/'([a-zA-Z0-9-]+)'] = 'products/show';

但是,这条路线导致我这条路线的问题也被这样的每条路线使用,例如http://sitename.com/admin/dashboard,我不想这样,所以我在路线中添加一个标识符,如{{1}现在我的单个产品页面正在使用此路由,并且与任何其他路由不冲突。现在的问题是如何从

中省略http://sitename.com/myproducts/category-slug/product-slug部分

myproductshttp://sitename.com/myproducts/category-slug/product-slug

我知道可以使用http://sitename.com/category-slug/product-slug,但不知道怎么做?

1 个答案:

答案 0 :(得分:0)

如果你有像

这样的网址
http://sitename.com/admin/dashboard
http://sitename.com/myproducts/category-slug/product-slug

您可以在路线文件中执行此操作

$route['admin/:any']            = 'admin/int_rout/$1';
$route['myproducts/:any/:any']  = 'products/show/$1/$2';

但是如果你想拥有相同的路线功能并做出每一个决定 与网址一样

http://sitename.com/admin/dashboard
http://sitename.com/category-slug/product-slug

$route['(.+)']    = function ( $param ) {
                        $pos        = strpos($param, '/');

                        if( ! $param){
                            $return = 'simple/url';
                        }
                        else{
                            $return = explode('/', $param);

                            switch($return[0]){
                                case 'admin':
                                    $return    = 'admin/int_route';
                                    break;
                                default:
                                    $return    = 'products/show/$return [0]/$return [1]';
                                    break;
                            }
                        }

                        return $return;
                    }