[英]What is routes.php in codeigniter
在codeigniter
, routes.php
的功能是什么?
我的老师接受过关于它的教导,并说如果你不使用例如以下的路线你的观点将不起作用:
$route['blabla'] = ['blabla/blabla'];
以及它的一切!
但对我来说,它没有使用任何路线。 我不知道为什么要使用路线。 这只是浪费时间。 谁能解释一下?
在codeigniter中,PHP文件以不同的方式提供,而不是直接从浏览器访问PHP文件。 此过程称为路由 。
我们的代码无需重写 routes.php中的url即可运行。
我们都希望以更方便的方式显示我们的网页,以便它对访问者(当然也包括搜索引擎)更有意义。 例如,只需通过检查浏览器地址栏中的URL,即可简要了解页面包含的内容。 如果我们保持这一点,就像服务器脚本(PHP,Asp.NET等)可以理解的那样,如下所示,不应该实现我们的目标:
http://yourdomain.com?p=1
http://yourdomain.com?p=2
http://yourdomain.com?w=30
http://yourdomain.com?z=234
//etc......
从上面的链接中,无法理解这些页面的内容。 现在,如果它如下所示:
http://codesamplez.com/database/codeigniter-activerecord
http://codesamplez.com/programming/regular-expressions-in-php
这些更有意义,我们可以从看到URL中得到一个简单的想法。 此外,与早期的网址相比,搜索引擎提供了更多的价值,这就是为什么它们被称为“搜索引擎友好网址”。 所以,无论你选择什么原因,总是更好地使用SEO友好的URL。 好的,现在,我们决定让我们的网站更加SE /访客友好,并希望使用这些网址。 现在,我们应该如何开发应用程序以将此URL映射到原始请求处理程序脚本?
Url Rewriting / Routing实际上是将这个seo友好URL转换为服务器代码可以轻松理解的格式/将请求驱动到相应的请求处理程序脚本的技术。
CodeIgniter具有用户友好的URI路由系统,因此您可以轻松地重新路由URL。 通常,URL字符串与其对应的控制器类/方法之间存在一对一的关系。 URI中的段通常遵循这种模式 -
your-domain.com/class/method/id/
在某些情况下,您可能希望更改此默认路由机制。 CodeIgniter提供了一些工具,您可以通过它来设置自己的路由规则。
有一个特定的文件,您可以处理所有这些。 该文件位于application / config / routes.php(您已经知道)。 您将找到一个名为$ route的数组,您可以在其中自定义路由规则。 $ route数组中的键将决定路由的内容,值将决定路由的位置。 CodeIgniter中有三条保留路由。
$路线[ 'default_controller']
如果URI不包含数据,则此路由指示应加载哪个控制器类,这是人们加载根URL时的情况。 建议您使用默认路由,否则将显示404页面。 我们可以在这里设置网站的主页,以便默认加载。
$路线[ '404_override']
此路由指示如果找不到请求的控制器,应加载哪个控制器类。 它将覆盖默认的404错误页面。 它不会影响the show_404()
函数,它将继续加载application/views/errors/error_404.php.
的默认error_404.php
文件application/views/errors/error_404.php.
$路线[ 'translate_uri_dashes']
布尔值显而易见,这不是一条路线。 此选项使您可以使用控制器和方法URI段中的下划线自动替换短划线(' - '),从而在需要时节省其他路径条目。 这是必需的,因为破折号不是有效的类或方法名称字符,如果您尝试使用它,将导致致命错误。
在CI代码中将运行没有routes.php。 routes.php用于自定义url / routes,就像你有url一样
example.com/pages/about_us
其中“pages”是你的控制器,“about_us”是该控制器中的方法,如果你想显示没有像example.com/about_us
这样的控制器的url,那么你需要以这种方式使用routes.php
$route['about_us'] = ['pages/about_us'];
在codeigniter中路由一个主要功能,用于用户友好的URL和SEO友好的谷歌搜索。
这是什么意思:如果有任何用户搜索了您网站上的任何产品,那么URL将是www.domain.in/categalog/Deskstop-Intel-124343
现在在这种情况下,网址是用户友好的如何解释它在路由中维护。
每次url被命中控制流到routes
和从routes
到controller
$route['product/(:any)'] = 'catalog/product_lookup';
现在,categorieslog / product_lookup被解释为产品/任何意味着有一个控制器Product
接受Id /文本作为输入。
这就像根据我们的要求制作用户定义的URL一样简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.