【问题标题】:CodeIgniter URI routing with "#" as path parameter [duplicate]使用“#”作为路径参数的 CodeIgniter URI 路由 [重复]
【发布时间】:2020-10-09 14:51:43
【问题描述】:

我有一个Home.php 控制器和terms 方法。我有一个这样的网址:https://www.example.com/terms,它工作正常。

我的routes.php

$route['default_controller']   = 'home';
$route['404_override']         = '';
$route['translate_uri_dashes'] = FALSE;

$route['terms']     = 'home/terms';

现在,我需要将网址更改为:https://www.example.com/#/terms 注意中间的“#”。

我尝试将其添加到路由中,但没有成功:

$route['#/terms']       = 'home/terms';

当我打开https://www.example.com/#/terms时,上面的更改显示主页

但是,如果我将conifg.php 中提到的任何其他允许的字符$config['permitted_uri_chars'] 代替#,那么它可以正常工作:

$route['a/terms']       = 'home/terms'; // this works: https://www.example.com/a/terms   
$route['2/terms']       = 'home/terms'; //this works: https://www.example.com/2/terms

我还在$config['permitted_uri_chars'] 中添加了#,但这也不起作用。一直只显示主页。

另外,谁能解释一下为什么 # 与 permitted_uri_chars 中的其他字符不一样?

控制器是Home.php,方法是terms()。使用 CodeIgniter 版本 3.1.11

谢谢!

编辑:

我想知道我是否可以使用 Codeigniter 的路由来实现它?或者也许是一些使用 .htaccess 的重写规则?

【问题讨论】:

  • 为什么它被关闭为“重复”?我问我是否可以使用 codeigniter 的路由来做到这一点?

标签: php uri codeigniter-3


【解决方案1】:

这是由网络浏览器引起的,而不是 CodeIgniter。 Web 浏览器将 URL 中的 # 及其后面的任何内容视为对 # 部分之前的 URL 所指向的网页上的元素的引用。

所以对于 URL https://example.com/#page1,网络浏览器会向https://example.com/ 发出请求,然后在网页上查找 ID 为 page1 的元素。

如果您希望通过在 URL 中使用“#”来加载不同的页面,则可以使用 Angular 等前端框架来完成。检查 Angular 的路由功能,了解它如何让浏览器在 # 之后为不同的 URI 路径加载不同的视图。

【讨论】:

  • 谢谢,但我想知道我是否可以使用 Codeigniter 的路由来实现它?或者也许是一些使用 .htaccess 的重写规则?
  • Web 浏览器甚至不会将# 之后的部分发送到服务器。所以没有办法做到这一点。正如我所说,使用前端框架可以实现类似的效果。
猜你喜欢
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 2013-11-11
  • 1970-01-01
  • 2014-12-06
相关资源
最近更新 更多