如何使用日期重写代码点火器中的 url



我在代码点火器URL重写方面遇到了一些问题。

问题是标准 htaccess 重写在这里不起作用。

我希望 htaccess 重写这个:

http://www.example.com/home/results?date=2017-10-02

http://www.example.com/home/results/2017-10-02

感谢您的帮助!

这不起作用:

RewriteRule ^results/([^/]+)$ results?date=$1 [L]

您可以使用以下RewriteRule

执行此操作
RewriteEngine on
RewriteCond %{QUERY_STRING} ^date=([0-9]{4}(-[0-9]{2}){2})$ [NC]
RewriteRule ^home/results$ /home/results/%1? [L]

%1是从RewriteCond中的正则表达式中提取第一组。使用尾随?,以便查询字符串也不会追加到重写中。

在 Apache 中,RewriteRule指令的第一个参数不包含查询字符串,因此必须使用检查%{QUERY_STRING}RewriteCond

此外,如果您希望它不那么具体,那么您可以编辑用于匹配查询字符串的正则表达式,它目前非常具体,因为该日期必须是查询字符串中的唯一参数,并且它必须是"(4 个数字(-(2 个数字(-(2 个数字("。您可以在此处查看正则表达式的细分。

很简单,你必须在路由中创建路由.php文件不需要制定重写规则。

$route['home/results/(:any)'] = 'home/results';

这是 CI 用于 URL 路由

的官方文档https://www.codeigniter.com/user_guide/general/routing.html

您需要在 .htaccess 文件中添加以下规则

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

在此处查看 CI URL 的工作原理

https://www.codeigniter.com/user_guide/general/urls.html

在CI URL中是数组段,您可以通过在域名后给出以0开头的段号来获取带有uri类的段,在这里您要获取分段为2的日期

$this->uri->segment(2);

在这里链接 CI uri 类,您还可以找到更多有用的方法

https://www.codeigniter.com/user_guide/libraries/uri.html

相关内容

  • 没有找到相关文章

最新更新