CodeIgniter .htaccess / Mod_rewrite - PullRequest
       9

CodeIgniter .htaccess / Mod_rewrite

0 голосов
/ 29 марта 2012

В прошлом я решал эту проблему, создавая новое правило для каждого контроллера.Итак, поехали;По умолчанию URL-адрес указан ниже;

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 / rout.php?Раньше я исправлял эту проблему, добавляя собственные маршруты и правила для каждой используемой комбинации.

Я гуглил несколько дней, но безуспешно.Скажите, пожалуйста, пропустил ли я сообщение.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2012
RewriteRule ^(.*)$ index.php?$1 [L]

Это помогает мне (заметьте? Вместо /), используя $config['uri_protocol'] = 'REQUEST_URI'; в файле конфигурации.

1 голос
/ 29 марта 2012

Лучше всего изменить структуру URL-адреса, для этого потребуется наименьшее количество конфигурации:

Используйте такую ​​структуру, как http://www.url.com/controller/method/param1_key/param1_value/param2_key/param2_value/etc...

Затем вы можете использовать $this->uri->uri_to_assoc() дляполучить пары ключ => значение в ассоциативном массиве.

См. документы здесь: http://codeigniter.com/user_guide/libraries/uri.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...