データベースに保存されている製品のSEOに適したURLを作成したいと思います。
URLからProductNameを取得するにはどうすればよいですか?
例えば:
http://domain.com/ProductName
ProductNameがControllerではない場合。コントローラからProductNameを検証して表示する必要があります。
データベースに保存されている製品のSEOに適したURLを作成したいと思います。
URLからProductNameを取得するにはどうすればよいですか?
例えば:
http://domain.com/ProductName
ProductNameがControllerではない場合。コントローラからProductNameを検証して表示する必要があります。
個人的には、データベースから製品を検索するためのパラメーターを受け入れる products というコントローラーを作成します。
class Products extends CI_Controller
{
public function index($productname)
{
$data['product'] = $this->db->get_where('products', array('urlname' => $product))->row_array();
// other functionality here and view loading
}
}
次に、このシナリオのルーティングを追加します (config/routes.php):
$route['other/routes/first'] = "their/correct/controller/$1";
$route['/(:any)'] = "/products/index/$1";
CI を使用してからしばらく経ちましたが、これは正しい方向に向けるのに役立つはずです。
routes.php にルーティング ルールを追加できます。要求を製品コントローラーにリダイレクトします。
$route['(:any)'] = "product/$1";
Product コントローラーで、URI セグメントから製品名を取得します。
$product_name = $this->uri->segment(2);
URI ルーティング (ルーティング ルール)を使用できます。
ルーティング ルールは、application/config/routes.php ファイルで定義されます。その中に、独自のルーティング基準を指定できる $route という配列があります。ルートは、ワイルドカードまたは正規表現を使用して指定できます
$route['/(:any)'] = "/products/index/$1";
この例では、次のようになります: http://www.example.com/MyProductName/製品クラスをロードし、名前をパラメーターとして指定します。
これを実現するためにCIルートを利用できます
Application/config/routes.php を編集
$route['/(:any)'] = "/products/index/$1";