2011-12-25 8 views
17

私の製品のルールを書き直したいと思います。商品名のURLを書き換えます

私はこのようなダッシュで区切られたURLのidと名前を使いたい:

123名が私のPHPでその製品ID = 123とname =名前

を意味し、私は$ _GET [ID]を取得し、このように、このIDを使用して、自分のデータベースを照会することができます

$sql = "SELECT * from Products Where productid = " . $_GET[id]; 

は、ここで私が持っているものです。

RewriteEngine On 
RewriteRule ^products/([0-9+])\-([a-z]+)/?$ products.php?id=$2 [NC,L] 

が、私は、URLとしてこれを置くとき、私は404

理由を取得しますか?

答えて

17

最初に:構文エラーがあります。 [0-9+]は、(i)09の範囲の数字、または(ii)+の記号に一致する文字クラスです。 (目的に応じて)+を量子として使用するには、]の後に+を移動します(([0-9]+))。

第2:あなたの商品には$2が使用されています。 IDを使用する場合は、$1を使用する必要があります。

は、ここにあなたが使用する必要があるものです:

RewriteEngine On 
RewriteRule ^products/([0-9]+)\-([a-z0-9_\-]+)/?$ products.php?product_id=$1 [NC,L,QSA] 

は、私は、製品番号、ダッシュで追加され、あなたはいつかそれを必要とする場合にはアンダースコア。

サード: あなたがsql injectionsに注意する必要があり、あなたのスクリプトは安全ではありません。これはmysql_real_escape_stringを使用して修正できます。

+0

この情報はありがとうございます。 – natalia

+0

あなたは大歓迎です –

0

最初に一致した引数がプロダクトIDであるため、products.php?id = $ 1を使用する必要があります。