CodeIgniter - 使URL更短

时间:2013-02-14 06:20:48

标签: php codeigniter url-rewriting

我是CodeIgniter的新手。
我创建了一个网站,我希望我的网址更短。
例如,现在网址是

http://example.com/planner/planner/index.php/planner/main

我希望成为

 http://example.com/planner/planner/main. 

首先,我删除index.php标签,但之后url给我一个404错误。
我想删除index.php和控制器名称。

谁知道我该怎么做?

PS。我的网址仅适用于index.php标记...

2 个答案:

答案 0 :(得分:1)

制作.htaccess

RewriteBase /
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L] 

编辑MYAPPLICATION_FOLDER \ config \ config.php

$config['index_page'] = '';

阅读USERGUIDE

http://ellislab.com/codeigniter/user-guide/general/urls.html

答案 1 :(得分:1)

您可以使用以下代码从网址中删除index.php。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

但是为了进一步缩短你的网址,你需要通过codeIgniter起诉路由重映射功能。您可以在codeigntier User guide明确地在URL路由下找到它。

路由规则在application / config / routes.php文件中定义。在其中,您将看到一个名为$ route的数组,它允许您指定自己的路由条件。可以使用通配符或正则表达式

指定路由
 Wildcards

典型的通配符路径可能如下所示:

 $route['product/:num'] = "catalog/product_lookup";

在路由中,数组键包含要匹配的URI,而数组值包含应重新路由到的目标。在上面的示例中,如果在URL的第一个段中找到文字“product”,并且在第二个段中找到一个数字,则使用“catalog”类和“product_lookup”方法。

您可以匹配文字值,也可以使用两种通配符类型:

(:num)将匹配仅包含数字的段。 (:any)将匹配包含任何字符的段。

注意:路由将按照定义的顺序运行。较高的路线始终优先于较低的路线。 实例

以下是一些路由示例:

   $route['journals'] = "blogs";

第一段中包含“journals”一词的网址将重新映射到“博客”类。

   $route['blog/joe'] = "blogs/users/34";

包含blog / joe段的URL将重新映射到“blogs”类和“users”方法。 ID将设置为“34”。

   $route['product/(:any)'] = "catalog/product_lookup";

以“product”作为第一段的URL,第二段中的任何内容都将重新映射到“catalog”类和“product_lookup”方法。

   $route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

以“product”作为第一段的URL,第二段中的数字将重新映射到“catalog”类,而“product_lookup_by_id”方法将匹配作为变量传递给函数。