Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-缩短URL_Php_Codeigniter_Url Rewriting - Fatal编程技术网

Php CodeIgniter-缩短URL

Php CodeIgniter-缩短URL,php,codeigniter,url-rewriting,Php,Codeigniter,Url Rewriting,我是CodeIgniter的新手。我创建了一个站点,希望我的url更短。例如,现在url变短了 http://example.com/planner/planner/index.php/planner/main 我想成为 http://example.com/planner/planner/main. 首先,我删除index.php标记,但在那之后,url给我一个404错误。我想删除index.php和控制器名称。 有人知道我怎么做吗 我的URL只能与index.php标记一起使用 ma

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

http://example.com/planner/planner/index.php/planner/main
我想成为

 http://example.com/planner/planner/main. 
首先,我删除index.php标记,但在那之后,url给我一个404错误。
我想删除index.php和控制器名称。

有人知道我怎么做吗

我的URL只能与index.php标记一起使用

make.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\u文件夹\config\config.php

$config['index_page'] = '';
阅读用户指南


您可以使用以下代码从url中删除index.php

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
但为了进一步缩短url,您需要使用codeIgniter的路由重新映射功能。你可以在URL路由下找到关于它的详细信息

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

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

 $route['product/:num'] = "catalog/product_lookup";
在路由中,数组键包含要匹配的URI,而数组值包含应该重新路由到的目标。在上面的示例中,如果在URL的第一段中找到了文字“product”,而在第二段中找到了一个数字,则将使用“catalog”类和“product_lookup”方法

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

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

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

以下是一些路由示例:

   $route['journals'] = "blogs";
在第一段中包含单词“journals”的URL将被重新映射到“blogs”类

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

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


第一段为“product”,第二段为数字的URL将重新映射到“catalog”类和“product\u lookup\u by\u id”方法,该方法将匹配项作为变量传递给函数。

此问题至少有5个重复项。url中的Planner/Planner是什么………..?这将是一个名为“Planner”的控制器文件夹,然后是一个名为“Planner”的控制器。Controller->Planner->Planner.ph在这种情况下,您走错了方向。前两个/Planner/Planner是我根目录中的文件夹。在index.php之后,我有了我的控制器名(“planner”)和我的视图(“main”),但这只是删除了我的index.php标记,之后我的url就不起作用了。我不知道为什么我的url只与index.php标记一起工作,我做到了,但那只是删除我的index.php标记,然后我的url就不工作了。我不知道为什么我的url只能与index.php标记一起使用是的,我删除了index.php,但在那之后,我无法进一步使用我的站点。。。例如:效果很好。之后,我删除index.php。链接将是,链接将不起作用…是的,我做了。现在我只留下了,但没有工作。你能告诉我我需要在$route中添加什么吗。。。。我可以提到,planner是我的默认控制器,admin是一个视图。正确阅读用户指南,首先尝试实现基本的MVC,然后执行应用程序。。。。。。。。。
   $route['blog/joe'] = "blogs/users/34";
   $route['product/(:any)'] = "catalog/product_lookup";
   $route['product/(:num)'] = "catalog/product_lookup_by_id/$1";