Php 使用routes for seo purpose在url中隐藏或删除控制器名称=codeigniter

Php 使用routes for seo purpose在url中隐藏或删除控制器名称=codeigniter,php,.htaccess,codeigniter,Php,.htaccess,Codeigniter,我使用一个控制器。如何使用路由删除或隐藏URL上的控制器名称? 我已经将.htaccess设置为删除index.php。我试过很多类似问题的代码,但运气不好。我不知道我的live服务器是否有问题,因为在我以前的项目中,我使用了此代码 $route['del/(:any)'] = "my_cotroller"; $route['(:any)'] = 'pages/view/$1'; 这很好用,但当我尝试在我当前的项目中使用它时,它没有起作用。 这是我的默认路线 $route['default_c

我使用一个控制器。如何使用路由删除或隐藏URL上的控制器名称? 我已经将.htaccess设置为删除index.php。我试过很多类似问题的代码,但运气不好。我不知道我的live服务器是否有问题,因为在我以前的项目中,我使用了此代码

$route['del/(:any)'] = "my_cotroller";
$route['(:any)'] = 'pages/view/$1';
这很好用,但当我尝试在我当前的项目中使用它时,它没有起作用。 这是我的默认路线

$route['default_controller'] = "my_cotroller";
$route['404_override'] = '';
我想像这样存档一个URL,但我当前的路线代码给了我这个


感谢您的帮助。

使用CI时的简单方法:

控制器示例:

<?php
class Haha extends CI_Controller
{
    public function check()
    {           
        $this->load->view('path/to/check/view');
    }

    public function choke()
    {
        $this->load->view('path/to/choke/view');
    }
}
我的访问权限:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]
访问uri:

http://yoursite.com/check
http://yoursite.com/choke/whatever

//or

http://yoursite.com/squirrel
http://yoursite.com/woohoo/whatever
补充: 这是我使用CI的旧项目的完整路线,也许你可以得到一些东西

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$route['default_controller'] = 'sitehome';

$route['page'] = 'sitehome/page';
$route['page/who-we-are'] = 'site/whoweare';
$route['page/why-use-us'] = 'site/whyus';
$route['page/about-us'] = 'site/about';
$route['page/contact-us'] = 'site/contact';
$route['page/news'] = 'site/news/news';
$route['page/topics'] = 'site/topic';
$route['page/polls'] = 'site/polls';
$route['page/results'] = 'site/result';
$route['agent/detail/(:any)'] = 'site/agentdetail';
$route['register'] = 'site/register';
$route['login'] = 'site/login';

$route['user/home'] = 'usermain';
$route['user/edit-account'] = 'user/editaccount';
$route['user/retire'] = 'user/retired';
$route['user/business/data'] = 'user/business';
$route['user/business/topic/create'] = 'user/topic/topiccreate';
$route['user/business/topic/view'] = 'user/topic/topicview';
$route['user/business/topic/edit/(:num)'] = 'user/topic/topicedit';
$route['user/inbox'] = 'user/inbox';
$route['user/message/read/(:any)'] = 'user/readmessage';
$route['user/provider/list'] = 'user/providerlist';
$route['user/provider/send-message/(:any)'] = 'user/providerlist/sendmessage';
$route['user/notification'] = 'user/notified';
$route['user/inquiry'] = 'user/inquiry';

//testing purpose
$route['percobaan'] = 'coba/percobaan';

$route['poll'] = 'site/polls/retrievePoll';

//serve response
$route['response/single-poll'] = 'api/ResponseData/serveHomePoll';
$route['response/multi-poll'] = 'api/ResponseData/servePoll';

$route['404_override'] = 'notFound';
$route['translate_uri_dashes'] = FALSE;

/* End of file routes.php */
/* Location: ./application/config/routes.php */

使用CI时的简单方法:

控制器示例:

<?php
class Haha extends CI_Controller
{
    public function check()
    {           
        $this->load->view('path/to/check/view');
    }

    public function choke()
    {
        $this->load->view('path/to/choke/view');
    }
}
我的访问权限:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]
访问uri:

http://yoursite.com/check
http://yoursite.com/choke/whatever

//or

http://yoursite.com/squirrel
http://yoursite.com/woohoo/whatever
补充: 这是我使用CI的旧项目的完整路线,也许你可以得到一些东西

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$route['default_controller'] = 'sitehome';

$route['page'] = 'sitehome/page';
$route['page/who-we-are'] = 'site/whoweare';
$route['page/why-use-us'] = 'site/whyus';
$route['page/about-us'] = 'site/about';
$route['page/contact-us'] = 'site/contact';
$route['page/news'] = 'site/news/news';
$route['page/topics'] = 'site/topic';
$route['page/polls'] = 'site/polls';
$route['page/results'] = 'site/result';
$route['agent/detail/(:any)'] = 'site/agentdetail';
$route['register'] = 'site/register';
$route['login'] = 'site/login';

$route['user/home'] = 'usermain';
$route['user/edit-account'] = 'user/editaccount';
$route['user/retire'] = 'user/retired';
$route['user/business/data'] = 'user/business';
$route['user/business/topic/create'] = 'user/topic/topiccreate';
$route['user/business/topic/view'] = 'user/topic/topicview';
$route['user/business/topic/edit/(:num)'] = 'user/topic/topicedit';
$route['user/inbox'] = 'user/inbox';
$route['user/message/read/(:any)'] = 'user/readmessage';
$route['user/provider/list'] = 'user/providerlist';
$route['user/provider/send-message/(:any)'] = 'user/providerlist/sendmessage';
$route['user/notification'] = 'user/notified';
$route['user/inquiry'] = 'user/inquiry';

//testing purpose
$route['percobaan'] = 'coba/percobaan';

$route['poll'] = 'site/polls/retrievePoll';

//serve response
$route['response/single-poll'] = 'api/ResponseData/serveHomePoll';
$route['response/multi-poll'] = 'api/ResponseData/servePoll';

$route['404_override'] = 'notFound';
$route['translate_uri_dashes'] = FALSE;

/* End of file routes.php */
/* Location: ./application/config/routes.php */

您可以在config/routes.php中定义自定义路由-例如:

$route['about'] = 'name_controller/about';
那么, 去


更多信息请参见

您可以在config/routes.php中定义自定义路由-例如:

$route['about'] = 'name_controller/about';
那么, 去


查看更多信息

因此我需要为每个页面创建单独的路由?创建一个自动处理所有路由并删除控制器名称的路由如何?因为,这段代码会自动删除控制器名$route['del/(:any)]=“my_cotroller”$路由['(:any)]=“页面/视图/$1';然而,这不再适用于我当前的项目,我不知道为什么。
(:any)
意味着您可以在uri上提供任何内容,只要允许使用字符<代码>$route['choke/any']='haha/choke'会将用户带到haha/扼流圈控制器,无论他们在第2段中使用什么。除非你在你的控制器或模型上过滤它,只接受第2段的一些单词。如果我做对了,它可能是这样的$路线['choke2/(:any)]='haha/choke2'$路线['choke3/(:any)]='haha/choke3'$路线['choke4/(:any)]='haha/choke4';是的,例如:
$route['choke2/(:any)]='haha/choke2'可通过
http://example.com/choke2/what
http://example.com/choke2/bla-bla
http://example.com/choke2/aw-so-some
。2(秒)uri段将指向什么
haha/choke2
。但是这个uri
http://example.com/choke2/else/if
将失败,因为包含第三段,因为它未在路由上声明。我知道了!谢谢你的帮助。所以我需要为每个页面创建单独的路由?创建一个自动处理所有路由并删除控制器名称的路由如何?因为,这段代码会自动删除控制器名$route['del/(:any)]=“my_cotroller”$路由['(:any)]=“页面/视图/$1';然而,这不再适用于我当前的项目,我不知道为什么。
(:any)
意味着您可以在uri上提供任何内容,只要允许使用字符<代码>$route['choke/any']='haha/choke'会将用户带到haha/扼流圈控制器,无论他们在第2段中使用什么。除非你在你的控制器或模型上过滤它,只接受第2段的一些单词。如果我做对了,它可能是这样的$路线['choke2/(:any)]='haha/choke2'$路线['choke3/(:any)]='haha/choke3'$路线['choke4/(:any)]='haha/choke4';是的,例如:
$route['choke2/(:any)]='haha/choke2'可通过
http://example.com/choke2/what
http://example.com/choke2/bla-bla
http://example.com/choke2/aw-so-some
。2(秒)uri段将指向什么
haha/choke2
。但是这个uri
http://example.com/choke2/else/if
将失败,因为包含第三段,因为它未在路由上声明。我知道了!谢谢你的帮助。