Codeigniter使URL成为友好的SEO

时间:2016-02-03 09:57:53

标签: php codeigniter url routes seo

我当前的网址如下:

www.hostname.com/get_city/

(此网址已通过使用路线缩短) 这里get_city是我的方法名称,现在我想要的是 ...

1)从网址中删除控制器名称

2)从下拉列表中传递选定的城市值,并在网址中设置为参数

因此,必填网址为:www.hostname.com/californiawww.hostname.com/newjersey

注意:我知道如何使用路由但在这种情况下如何制作动态URL?! 请不要直接参考ellislab文档,因为我已经尝试过这些东西

3 个答案:

答案 0 :(得分:0)

对于codeigniter中的动态路由:

尝试这样:

在routes.php文件中

复制并粘贴这些代码:

require_once (BASEPATH . 'database/DB' . EXT);
require_once (BASEPATH . 'helpers/url_helper' . EXT);
require_once (BASEPATH . 'helpers/text_helper' . EXT);
$db = &DB();

$query = $db -> get('news');
$result = $query -> result(); //result return all records
foreach ($result as $row) {
    $string = rawurlencode(str_replace(' ', '-', strtolower($row -> subject)));
    $route[$string] = "controller/news_details/$row->id";
}

所以你可以用任何你想要的字符串来改变$ string。

然后尝试输入新的网址,看看路由可以正常工作。

注意:.htaccess文件必须删除url中的index.php

希望这有帮助。

答案 1 :(得分:0)

您可以尝试使用方法“_remap”。

查看官方文档以获取有关该功能行为的更多信息:

http://www.codeigniter.com/user_guide/general/controllers.html

问候。

答案 2 :(得分:0)

您需要在application / config / routes.php

中配置路由

在现有路线添加

之后
$route['([a-z]+)'] = 'controller_name/method_name/$1';

但这会覆盖所有路线,在此路线之前,您需要为您的控制器声明所有路线

$route['product/:any'] = 'product/$1';
$route['catalog/:any'] = 'catalog/$1';

之后

// this route be used when previous routes is not suitables

$route['([a-z]+)'] = 'controller_name/method_name/$1'; 

DOCS:

http://code-igniter.ru/user_guide/general/routing.html

CI2:URI Routing

CI3:URI Routing