簡體   English   中英

CodeIgniter .htaccess / Mod_rewrite

[英]CodeIgniter .htaccess / Mod_rewrite

在過去,我通過為每個控制器創建一個新規則來解決這個問題。 所以我們走吧 默認情況下,網址如下;

http://www.url.com/index.php/controller/method/parameters

我想改變這個;

http://www.url.com/controller/method/parameter1/parameter2/parameter3/etc...

我的問題是參數 - 部分,因為我有時有3或4個參數,但有時沒有或只有一個。

現在我有這個(這不起作用,否則我不會發布):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

如果我只請求控制器它可以工作(因為存在index()方法),但自定義方法和參數不起作用。

那么,我還需要添加路由到config / routes.php嗎? 在過去,我通過為每個使用的組合添加自定義路由和規則來解決此問題。

我google了幾天,沒有成功。 如果我錯過了帖子,請告訴我。

提前致謝。

您最好的辦法是更改URL結構,這將需要最少量的配置:

使用http://www.url.com/controller/method/param1_key/param1_value/param2_key/param2_value/etc...結構http://www.url.com/controller/method/param1_key/param1_value/param2_key/param2_value/etc...

然后,您可以使用$this->uri->uri_to_assoc()來獲取關聯數組中的key =>值對。

請參閱此處的文檔: http//codeigniter.com/user_guide/libraries/uri.html

RewriteRule ^(.*)$ index.php?$1 [L]

這對我$config['uri_protocol'] = 'REQUEST_URI'; (注意?而不是/),使用$config['uri_protocol'] = 'REQUEST_URI'; 在配置文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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