我有一个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';
现在,我需要将 url 更改为如下所示: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 重写规则?
这是由Web浏览器引起的,而不是CodeIgniter。Web 浏览器将 # 及其之后的任何内容视为对网页上 # 部分之前 URL 所指向的元素的引用。
因此,对于 URL https://example.com/#page1,Web 浏览器将发出请求 https://example.com/,然后在网页上查找 ID 为 page1 的元素。
如果您希望通过在URL中使用"#"来加载不同的页面,则可以使用Angular等前端框架来完成。检查 Angular 的路由功能,了解它如何使浏览器为 # 之后的不同 URI 路径加载不同的视图。