CodeIgniter URL重写不起作用

时间:2016-07-05 11:24:34

标签: php .htaccess codeigniter mod-rewrite

我已经锁定了我的系统...... 我更改了config.php文件中的设置,以获得带参数的URL。 突然,我有一个产品控制器,显示我传递URL参数的ID。

http://localhost:8888/mywebsite/index.php?c=product&m=index&id_product=12

此网址现在可以使用,我想获得一个类型的网址:

http://localhost:8888/mywebsite/product/my-product-12

所以我把它放在.htaccess文件中:

RewriteRule ^product/([a-zA-Z0-9\-]+)-([0-9]+).html$ index.php?c=product&m=index&id_product=$2 [L]

但页面显示:此服务器上请求的网址/index.php/product/my-product-12.html 未找到

我的htaccess文件:

#Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1         [L,QSA]

RewriteRule ^product/([a-zA-Z0-9\-]+)-([0-9]+).html$ index.php?c=product&m=index&id_product=$2 [L]

我的config.php文件:

<?php

$config['base_url'] = 'http://localhost:8888/mywebsite/';
$config['index_page'] = '';
$config['uri_protocol'] = 'QUERY_STRING';
$config['url_suffix'] = '';
$config['enable_hooks'] = TRUE;
$config['allow_get_array']      = TRUE;
$config['enable_query_strings'] = TRUE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd'; 
$config['rewrite_short_tags'] = FALSE;

?>

1 个答案:

答案 0 :(得分:0)

在RewriteBase之后放置新的RewriteRule:

index.php?c=product

因为您必须先重写为{{1}}