[英]How to rewrite url in Codeigniter with date
我對codeigniter網址重寫有一些問題。
問題是標准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]
它很簡單,您必須在route.php文件中創建路由,而無需制定重寫規則。
$route['home/results/(:any)'] = 'home/results';
這是用於URL路由的CI官方文檔
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類,您還可以找到更多有用的方法
您可以使用以下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
指令的第一個參數不包含查詢字符串,因此必須使用RewriteCond
來檢查%{QUERY_STRING}
。
另外,如果您希望它不是那么具體,則可以只編輯用於匹配查詢字符串的正則表達式,它當前非常具體,因為該日期必須是查詢字符串中的唯一參數,並且它必須是“(4個數字) -(2個數字)-(2個數字)”。 您可以在此處查看正則表達式的細分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.