我是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标记...
答案 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”方法将匹配作为变量传递给函数。