是否可以使用不同的URL显示相同的页面?

时间:2017-09-01 10:29:44

标签: php codeigniter url

我想为不同的网址显示相同的内容。例如:

website.com/controllername/country/state1/dist1/
website.com/controllername/country/state2/dist2/

我希望这两个网址显示相同的内容。即使某些内容会因网址(如州和地区名称)而异。我不想为每个网址创建单独的内容/页面。我想知道它是否可以在Codeigniter中这样做?是否可以在Codeigniter中显示如上所示的URL?

4 个答案:

答案 0 :(得分:1)

是的,可以使用Codeigniter路由,

application/config/routes.php粘贴以下代码并更改您使用的控制器和功能名称

$route['([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])'] = 'your_controller_name/your_function_name/$1/$1/$1';

答案 1 :(得分:0)

与其他框架不同,CodeIgniter没有全局模板系统。除非另有说明,否则每个控制器独立于系统控制其自身的输出,视图为FIFO。

例如,如果我们有一个全局标题:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html>
    <head>
        <title><?=$title?></title>
        <!-- Javascript -->
        <?=$javascript ?>
        <!-- Stylesheets -->
        <?=$css ?>
    </head>
    <body>
        <div id="header">
            <!-- Logos, menus, etc... -->
        </div>
        <div id="content">

和全球页脚:

</div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>

然后我们的控制器必须看起来像

class Welcome extends Controller {

    function index() {
        $data['title'] = 'My title';
        // Javascript, CSS, etc...

        $this->load->view('header', $data);

        $data = array();
        // Content view data
        $this->load->view('my_content_view', $data);

        $data = array();
        // Copyright, sitemap, links, etc...
        $this->load->view('footer', $data);
    }
}

答案 2 :(得分:0)

是的,您可以在路由上设置具有不同网址设置的相同页面。 有关详情,请参阅以下链接: https://www.codeigniter.com/userguide3/general/routing.html

$ route [&#39; controllername / country / state1 / dist1 /&#39;] =&#39; catalog / product_lookup&#39 ;; $ route [&#39; controllername / country / state1 / dist2 /&#39;] =&#39; catalog / product_lookup&#39;;

答案 3 :(得分:0)

改善克里希纳拉答案......

你需要 website.com/controllername/method1/st/dist/ website.com/controllername/method2/st/dist /

//我已经改变了一些变量以便更好地理解,而“国家”会改变 //是主要的变化

所以在你的控制器上你只是

public function method1($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data);
     //here you choose the same view for both methods

     $this->load->view('footer');
}

public function method2($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data); 
     //here you choose the same view

     $this->load->view('footer');
}

在Kavin Smk解释的路线配置的情况下,注意到了一个错误,而不是

'your_controller_name/your_function_name/$1/$1/$1';

它应该

'your_controller_name/your_function_name/$1/$2/$3';

嗯,总有很多方法可以做同样的事情,选择你的...... 祝你好运!