我正在使用Codeigniter并希望拥有SEO友好的网址。将有两种类型的URI细分,http://www.domain.com/view/193847
和http://www.domain.com/view/193847-canon-5d-mark-iii
。
如果使用第一个网址,则会调用函数view_mini
并传递产品ID 193847
。如果使用第二个,则会调用函数view_full
并传递相同的产品ID 193847
。
问题:如何区分2个网址?或者这是解决问题的劣等方法?
PHP 如何构建if条件?
function view($pid) {
if($this->uri->segment(2) == something) {
$this->view_mini($pid);
} else {
$this->view_full($pid);
}
}
function view_mini($pid) {
// ...
}
function view_full($pid) {
// ...
}
修改
我正在使用网址路由将http://www.domain.com/controllername/view/1234
路由到http://www.domain.com/view/1234
答案 0 :(得分:0)
$route["view/(\d+)"] = "class/view_mini/$1";
$route["view/(\d+)-([\w'-]*)?/g"] = "class/view_full/$1/$2";
答案 1 :(得分:0)
不同的网址是否有明确的结构?
即
http://www.domain.com/view/[numbers]-[text]
如果是这样,您可以在数字和短划线之间测试该短划线的URL吗?
答案 2 :(得分:0)
你可以使用正则表达式检查段是否有除数字以外的任何内容,然后你可以执行你想要的视图,例如
$pattern = '\d[0-9][^a-zA-Z]';
$url = $this->uri->segment(2);
if(preg_match($pattern,$url))
{
//this will match only the numbers
$this->view_mini($pid);
} else {
$this->view_full($pid);
}
我希望这会有所帮助..
答案 3 :(得分:0)
使用
$result = explode('-', $this->uri->segment(1));
If(isset($result[1]))
{
// show full view
} else {
// show mini view
}
$ pid永远是$ result [0]