簡體   English   中英

如何用日期重寫Codeigniter中的URL

[英]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類,您還可以找到更多有用的方法

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

您可以使用以下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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM