以“#”作为路径参数的 CodeIgniter URI 路由
CodeIgniter URI routing with "#" as path parameter
我有一个 Home.php
控制器和 terms
方法。我有一个像这样的 url: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 重写规则?
这是由网络浏览器引起的,而不是 CodeIgniter。 Web 浏览器将 URL 中的 # 及其后的任何内容视为对网页上由 # 部分之前的 URL 指向的元素的引用。
所以对于一个URLhttps://example.com/#page1, the web browser will make a request to https://example.com/然后在网页上寻找ID为page1的元素
如果您希望通过在 URL 中使用“#”来加载不同的页面,可以使用 front-end 框架(例如 Angular)来完成。检查 Angular 的路由功能,了解它如何使浏览器在 #.
之后为不同的 URI 路径加载不同的视图
我有一个 Home.php
控制器和 terms
方法。我有一个像这样的 url: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 重写规则?
这是由网络浏览器引起的,而不是 CodeIgniter。 Web 浏览器将 URL 中的 # 及其后的任何内容视为对网页上由 # 部分之前的 URL 指向的元素的引用。
所以对于一个URLhttps://example.com/#page1, the web browser will make a request to https://example.com/然后在网页上寻找ID为page1的元素
如果您希望通过在 URL 中使用“#”来加载不同的页面,可以使用 front-end 框架(例如 Angular)来完成。检查 Angular 的路由功能,了解它如何使浏览器在 #.
之后为不同的 URI 路径加载不同的视图