3

名前のルートが重複している場合は、3つのルートを使用する代わりに1つのルートを使用しますが、どの正規表現を使用する必要があるかわかりません。何か提案はありますか?

今私はこれを持っています

product_test_1.html
product_test_2.html
product_test_3.html

私のcodeigniterルート

$route['product_test_1.html'] = "website/product";
$route['product_test_2.html'] = "website/product";
$route['product_test_3.html'] = "website/product";

私が欲しいもの(しかしそれは機能していません)

$route['/product_test/i'] = "website/product";

何かアイデアが私の問題を解決しますか?ありがとう

4

1 に答える 1

3

これを試して:

$route['product_test_[0-9]+\.html'] = 'website/product';

あなたが得ることができるように、これはほぼ特定のものです。は[0-9]任意の数字(の場合もあります\d)を+意味し、前のトークンの1つ以上(数字)を意味します。

何かをキャプチャしたい場合、トークンは「任意の文字」であるため、で.置き換えることができます。これは、1以上の(ほぼ)任意の文字の文字列と一致することを意味します。[0-9]+.+

これにより、同じページに重複するURLが作成されます。これは通常は望ましくありませんが、特に必要な場合があります。そうでない場合は、を介した301リダイレクトを検討できます.htaccess

それが目的である場合は、これを使用してIDを関数に渡すこともできます。

$route['product_test_([0-9]+)\.html'] = 'website/product/$1';

$1括弧は番号をキャプチャし、それがキャプチャされた最初のキャプチャ一致であるため、URLに渡します。

次に、コントローラーで、メソッドを次のようにwebsite宣言できます。product

function product($id)

そして$id、自動的に、から取得したURLで渡したIDになりますproduct_test_#.html

于 2012-10-11T03:52:36.763 に答える