1

Codeigniter を使用しており、SEO に適した URL が必要です。2 種類の URI セグメントがhttp://www.domain.com/view/193847あり、http://www.domain.com/view/193847-canon-5d-mark-iii.

最初の URL が使用される場合、関数view_miniが呼び出され、製品 ID が渡されます193847。2 番目のものを使用すると、関数view_fullが呼び出され、同じ製品 ID が渡され193847ます。

問題: 2 つの URL を区別するにはどうすればよいですか? それとも、これは問題を解決するための劣ったアプローチですか?

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) {
   // ...
}

編集

URLルーティングを使用してルーティングしていhttp://www.domain.com/controllername/view/1234ますhttp://www.domain.com/view/1234

4

4 に答える 4

0

使用する

$result = explode('-', $this->uri->segment(1));

If(isset($result[1]))
{
    // show full view
} else {

    // show mini view

}

$pid は常に $result[0] になります

于 2012-05-01T22:29:34.027 に答える
0

編集:未テスト

$route["view/(\d+)"] = "class/view_mini/$1";
$route["view/(\d+)-([\w'-]*)?/g"] = "class/view_full/$1/$2";
于 2012-05-01T01:19:02.657 に答える
0

異なる URL に決定的な構造はありますか?

すなわち。

http://www.domain.com/view/[numbers]-[text]

もしそうなら、数字とダッシュの間のダッシュの URL をテストできますか?

于 2012-05-01T01:25:46.673 に答える
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);
    }

これが役立つことを願っています..

于 2012-05-01T09:25:26.237 に答える