如何通过名称而不是id更改URL

时间:2013-09-06 17:16:56

标签: php codeigniter

在基本我有一个表类别,如

|id|name    |
|1 |home    |
|2 |tutorial|
...

和表格帖子一样

|id|name           |cateID|
...
|5 |getting started|2
...

1。如果我在类别中查看(点击)tutorial,那么网址就像

`index.php/nameOfControllerFile/functionName/2`

2是表类别的ID。

但我看到我查看的所有网站。它看起来像

category/tutorials.htm or like category/tutorials/

2。如果我查看getting started帖子,那么网址就像

index.php/nameOfControllerFile/functionName/5

5是表格帖子的ID。

但我看到我查看的所有网站。它看起来像

category/tutorials/getting-started.htm

以下是struction http://line25.com/category/tutorials

等网站

如何将基本网址更改为上面的网址?

修改

如果有两个帖子与

相同的标题是什么?
|id|name           |cateID|
...
|5 |getting started|2
|8 |getting started|2 
...

4 个答案:

答案 0 :(得分:0)

请参阅此处的Codeigniter帮助文档:

http://ellislab.com/codeigniter/user-guide/general/urls.html

请参阅名为删除index.php文件

的部分

答案 1 :(得分:0)

通过apache服务器中的.htaccess文件完成,重写url(mod rewrite),例如:

RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php

当您使用.php提供网址时,上面的行会查找扩展名为.html的文件,这意味着,如果您在地址栏中写入home.html,则服务器会查找home.php文件并将启动它。查看thisthis one too

此外,对于CodeIgniter,您可以查看this answer

答案 2 :(得分:0)

.HTACCESS将帮助您重写URL但您必须根据.HTACCESS文件更改配置中的路由文件。

答案 3 :(得分:0)

不知道你在问什么。可能是路线。检查一下:

假设您有一个名为tutorials的控制器。在该控制器中,您可以使用view函数查看特定教程,并在教程主页上使用index函数,您可以在其中查看所显示的第25行链接中的所有教程。

注意:请参阅https://stackoverflow.com/a/9667306/183254https://www.google.com/search?q=site%3Astackoverflow.com+codeigniter+remove+index.php,此问题中的其他答案等,以了解如何从网址中删除index.php。这个答案的其余部分将假设您已找到该部分(在url中没有index.php)。

这样:

class Tutorials extends CI_Controller{

    function index(){
        //view all tutorials
    }

    function view($tutorial_identifier){
        //view single tutorial based on $tutorial_identifier
        //which can be either an id or a name
    }
}

会让你的网址像

http://www.example.com/tutorials/view/5 

查看单个教程,

http://www.example.com/tutorials/

查看所有教程。

重要阅读:routes

如果您希望网址看起来更像

http://www.example.com/tutorials/5 

对于教程#5,您可以使用类似

的路线
$route['tutorials/(:num)'] = "tutorials/view/$1"; 

如果你想让它看起来更像

http://example.com/tutorials/getting-started

你可以添加像

这样的路线
$route['tutorials/(:any)'] = "tutorials/view/$1";

并更改控制器view功能中的逻辑,以便name而不是id查找教程。