2011-07-29 8 views
1

私はPHP5.3.6とIIS7を実行しています。私は現在、製品中心のサイトで、/product.php?id=12345などのクエリ文字列に基づいてページを動的に生成する1つのPHPページを作成しています。PHPとIIS7を使用してSEOと人間の読みやすい/読めるURLを作成する

私がデータベースに持っている製品の量はさまざまですが、数百にもなります。彼らは一意のIDと名前を持っています。

各ページがクエリ文字列ではなく名前でアドレス指定されるようにします。例えば

、代わりに:

/product.php?id=12345 

私は希望:

/acme-super-widget-in-blue-with-cool-groovy-gadget-attachment 

私はIIS7でURL Rewriteコンポーネントがありますが、私は手動で値を入力する必要はありません。むしろ、私はむしろダイナミックなプロセスを整えています。私はここに必要な機能は、web.configファイルにURL書き換えルールを追加することだと考えていますが、それが真であるか最善のアプローチであるかはわかりません。

ありがとうございます。

答えて

1

同じ名前の製品(将来の校正)、または非ASCII文字の製品をサポートできるように、IDとともに名前を使用することをお勧めします。私はいくつかのサイトに気付いているので、URLのascii文字だけを使用することをお勧めします。ブラウザは非ASCII文字を醜いパーセントエンコーディングに拡張する傾向があります。

7のIISは、Apacheよりも少しトリッキーですが、私は、これはここではあなたのためhttp://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx

を働くかもしれないと思うIDオフの名前を削除し、スクリプトにだけIDを渡します例の書き換えルールです。 )

;
^([0-9]+)[^/]*/?$ 

アクション

index.php?id={R:1} [QSA,L] 

Apacheのちょうど良いmessure用URL

マッチはリンクモジュールを使用して

IIS

あなたのフレンドリーなURLのid name部分を生成するPHP関数です。

function friendlyURL($id, $title) { 

    $string = $title; 
    $paramcount = func_num_args(); 
    for ($i = 2; $i < $paramcount; $i++) { 
     $string .= "-" . func_get_arg($i); 
    } 
    $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string); 
    $string = htmlentities($string, ENT_COMPAT, "utf-8"); 
    $string = preg_replace("`&([a-z]+);`i", "", $string); 
    $string = preg_replace("`['\[\]]`", "", $string); 

    $tmp = $string; 
    $string = preg_replace(array("/[^A-Za-z0-9]/", "`[-]+`"), "-", $string); 

    $string = trim($string, '-'); 
    return trim($id . "-" . $string, '-'); 
} 

これはあなたのURLの

プロダクトID = 12345のように、名前= "ACMEスーパーウィジェット"

/12345-acme-super-widget/ 

プロダクトID = 12345、名前= "日本製品ギター"

を与えるだろう
/12345-japanese-product/ 
+0

このコードは素晴らしいです。ありがとうございました。サイトの動的な性質から、IIS7のコントロールパネルから手動でエントリを追加することはできません。 PHPを使って適切な書き換えルールをweb.configファイルに追加する最も良い方法は何ですか?再度、感謝します。 –

+0

私はこのオプションを一度もテストしたことはありませんが、Apacheスタイルのすべての書き換えオプションとディレクトリごとに.htaccessファイルを使用すると伝えられています。 http://www.micronovae.com/ModRewrite/ModRewrite.html – AWinter

関連する問題