【问题标题】:How to hide the Post Controller name & method from URL using Codeigniter 3如何使用 Codeigniter 3 从 URL 中隐藏 Post Controller 名称和方法
【发布时间】:2021-12-03 07:41:17
【问题描述】:

我正在使用 Codeigniter 3 并试图从 URL 中隐藏控制器文件名和方法,但它不起作用。在下面的示例中,“CommonPages”是控制器文件名,“postdetails”是方法。

www.mydomain.com/CommonPages/postDetails/social-testing-post
www.mydomain.com/CommonPages/postDetails/fix-the-windows-errors

我想从 URL 中隐藏 CommonPages/postDetails。大约有 100 个帖子,所以如果我不在 route.php 文件中指定每个页面链接,那就太好了。或者,我在route.php 中尝试了以下代码,但它对我不起作用。

$route['(:any)'] = 'CommonPages/postDetails/$1';
$route['(:num)'] = 'CommonPages/postDetails/$1';
$route['([a-zA-Z0-9]+)'] = "CommonPages/postDetails/$1";

谢谢大家。

【问题讨论】:

  • 您的路线可以是任何东西。那么您想要 URL 是什么?假设您想要posts/something,那么您将添加如下路线:$route['posts/(:any)'] = 'CommonPages/postDetails/$1';
  • 我真的建议您花几分钟浏览一下文档,如果您掌握了这些基础知识,您的开发将会更加顺畅。 The tutorial 提供了大多数关键细节的快速概览,包括路由。 the URLs section 在您需要时提供有关路由的更多详细信息。

标签: php codeigniter codeigniter-3


【解决方案1】:
$route['product/:num'] = 'catalog/product_lookup';

在路由中,数组键包含要匹配的 URI,而数组值包含应重新路由到的目的地。

在上面的示例中,如果在 URL 的第一段中找到文字词 product,并且在第二段中找到一个数字,则 catalog 类和 @改为使用 987654325@ 方法。

您需要更好地配置路线检查此以获取更多信息:

https://codeigniter.com/userguide3/general/routing.html

【讨论】:

  • 也许你想要这样的东西。 $route['social-testing-post/(:any)'] = 'CommonPages/postDetails/$1';
  • 嗨@Ak1to 我已经像这样添加了 $route['default_controller'] = 'home'; $route['social-testing-post/(:any)'] = 'CommonPages/postDetails/$1'; $route['404_override'] = ''; $route['translate_uri_dashes'] = 假;但我仍然可以在 URL 中看到类和方法:mydomain.com/CommonPages/postDetails/social-testing-post
  • @Jennifer 除非您在您的网站上使用该 URL,否则没有人可以看到它。 CommonPages/postDetails/social-testing-post 将始终有效,因为 Codeigniter 将 URL 映射到控制器/方法。但是如果你设置了一个路由,你可以使用一个不同的 URL 来访问那个页面,并且控制器/方法版本永远不会是可见的或公开的,它永远不会被使用。
  • 嗨@Hasan @VictorLee 和@Ak1to。最后$route['(:any)'] = 'CommonPages/postDetails/$1'; 为我工作,将routes.php 放在下面,然后从锚标签中删除CommonPages/postDetails,例如:<a href="CommonPages/postDetails/<?php echo $top['slug']; ?>"> 我非常感谢您的帮助。谢谢
  • 也可以使用helper URL Helper
【解决方案2】:

您可以直接更新您的路线

$route['CommonPages/postDetails/(:any)'] = 'anyClass/anyMethod';

在 anyMethod 上,您可以获得用于获取参数的 uri 段

public function anyMethod ()
        {
        print_r($this->uri->segments);
        }

【讨论】:

  • 嗨@Hasan。感谢您的回复。我已经尝试过,但它对我不起作用。请您看一下控制器文件的屏幕截图。我已经更新了问题。
  • OP 说“我想从 URL 中隐藏 CommonPages/postDetails” - 为CommonPages/postDetails/ 添加路由有什么帮助?
  • 嗨哈桑。是的,我需要隐藏CommonPages/postDetails/,但上述方法不起作用
猜你喜欢
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多