0

私は正規表現や apache の書き換えに取り組んだことはありませんが、顧客のために大きな e コマース サイトを作成したことがあります。彼は今、彼のストアの URL を書き換えることができるかどうか尋ねてきました。必要なものが 2 つあります。誰かが希望どおりに書き直すことさえ可能かどうか教えていただければ、非常に助かります。

現在の商品詳細URLは、product/details/3/royal-blue-choir-stoleです。

そして、彼はそれがただあることを望んでいます... /royal-blue-choir-stole

2 つ目はカテゴリ ページです。彼らは現在

カテゴリ/ビュー/聖歌隊ストール

そして彼はそれらが/choir-stolesであることを望んでいます

これは可能ですか?現在行われていることを確認したい場合は、サイトへの完全な URL は現在http://www.stoles.com/stoles (ユーザー名 alex、パスワード superman) です。そのコードイグナイターでプログラムされています。

現在、codeigniter URL の index.php を取り除くために、次の書き換えが行われています...

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
4

3 に答える 3

0

これは私が本当に興味を持っていることです。頻繁に変更されないカテゴリの数が限られている場合は、カテゴリルートをハードコーディングするのが妥当と思われます。

 $route['choir-stoles'] = "shop/choir-stoles";

それ以外の場合、カテゴリが常に変化している場合、または同じ方法で製品を実行したい場合は、URLにある値を検索する必要があります。これは何でもかまいません。それで、私が疑問に思っているのは、どのようなプレフィルタリングが発生する可能性があるので、次のようなリクエストを受け取った場合

 http://www.stoles.com/213as+dfjljWHATEVER

データベースとコントローラーに移動する前に停止したこと。

このタイプのフィルタリングはルートで発生する必要がありますか?そして、私たちはこの種の試みを記録する必要がありますか?彼らが連続して数回それを行う場合、IPを禁止しますか?それとも、これは過度に妄想的であり、問​​題ではありませんか?

現在のスタイルは、「product」、「category」などの1つの単語の後ろに検索値をプッシュすることですが、より多くのクライアントが短いURLを要求するため、いくつかのベストプラクティスを考え出すのはクールです。

于 2012-11-26T17:53:57.360 に答える
0

最初に、おそらく次のように、カテゴリの URL と製品の詳細の URL が異なる必要があります。

product details  :   pd/royal-blue-choir-stole    
category         :   /choir-stoles 

しかし、接頭辞なしでやりたい場合は、URLを製品のタイトルまたはカテゴリ名と一致させることができます. たとえば
、「Choir Stoles」という名前のカテゴリと「royal blue choir stole」という名前の製品があるとします。
htaccess で次のコード行を使用できるようになりました。

RewriteRule /([a-z\-]+)$ router.php?q=$1  [NC,L] 

次に、router.php で $_GET['q'] を取得し、「-」をスペースに置き換えて、データベースを検索し、それがカテゴリか製品かを調べて、データベースからその情報を取得します。
お役に立てば幸いです。

于 2012-11-26T09:08:10.080 に答える
0

製品の URL (routes.php に追加) (product/details/blah-blah-blah-blah)

ルートの値を次のように変更します

$route['product/:any'] = "product/details";
product ->controller
details -> action

カテゴリの URL (category/view/blah-blah) の場合

$route['catagory/:any'] = "catagory/details";
    catagory ->controller
    details -> action

http://ellislab.com/codeigniter/user-guide/general/routing.html

于 2012-11-26T09:08:27.880 に答える