У меня были некоторые проблемы с маршрутизацией CodeIgniter: я хочу создать сайт для демонстрации некоторых продуктов, и мне нужно создать URL-адрес, следуя правилу:
http://localhost/testsite/category-name/product-name/id.html
или http://localhost/testsite/pro-id/category-name/sub-category-name1/.../product-name.html
с "имя-категории", "имя-подкатегории1", "имя-подкатегории2"..., "название-продукта" и "id" загружались динамически из базы данных.
Как я могу настроить значение маршрута для этого? Я пробовал с некоторыми случаями, но это не работает:
$route['pro-(:num)/(:any).html'] = 'product/detail?pid=$1';
$route['(:any)/(:num)'] = 'product/detail?pid=$1';
Большое спасибо за любую помощь!
Спасибо @Bira за поддержку, но проблема осталась :)
Вот содержимое моего файла route.php.
$route['default_controller'] = 'product';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['home.html'] = 'product/index';
$route['pro-(:num)/(.+).html'] = 'product/detail?pid=$1';
$route['(:any)/(:any)/(:num).html'] = 'product/detail?pid=$3';
И содержимое .htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^home.html index.php/product/index
RewriteRule ^pro-([0-9]+)/(.*).html index.php/product/detail?pid=$1
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+)/([0-9]+).html index.php/product/detail?pid=$3
И... работает только один URL "http://localhost/testsite/home.html" ( первое правило). Другие правила вернут ошибку: 404 Страница не найдена (например: "http://localhost/testsite/pro-3/category-name/product-name.html")
Вот мой класс тестового контроллера:
class Product extends CI_Controller {
public function index()
{
$this->load->view('products');
}
public function detail()
{
$pid = $_GET['pid'];
$data['pid'] = $pid;
$this->load->view('product_detail', $data);
}
}
Большое спасибо за любую поддержку, я просто новичок в CI :)