2010-11-28 12 views
2

mod_rewriteでの初心者の合計。Apache mod_rewrite:データベースを使用して書き換えルールを更新する

はので、私は がwww.mysite.com/samsungている、のは、私は自分のサイト上のすべての製造業者のための素敵なURLを作成したいとしましょう www.mysite.com/sony www.mysite.com/acme

は十分に機能します。

しかし、何百もの製造元があり、それらが絶えず変化しているのであれば、それは何ですか?どこかでリライトマップと呼ばれるものについてはあいまいな参照がいくつかありますが、それを説明するものもチュートリアルもありません。誰も助けることができますか?

また、なぜこの問題はmod_rewriteのチュートリアルで扱われている主題ではないのですか? mod_rewriteは、手動で管理しなければならない場合にはどのように役立つでしょうか?

httpd.confにアクセスする必要があることにも言及しています ホスティングプロバイダのサーバーでhttpd.confにアクセスするにはどうすればよいですか?他のすべてのサイトはどのようにこれを行いますか?これは一般的に行われるような方法は、あなたがより複雑なルーティングのためのPHPファイル(または任意のサーバーサイドのプログラミング言語がある)に特定のパターンとルートそれらを一致するすべてのURLを取るだろうということです

おかげ

答えて

1

。このような何か:。

RewriteRule ^(.*)$ myroute.php?url=$1 [QSA,L] 

次に、あなたのmyroute.phpファイルで、あなたはそれが来た URLが含まれていますから、「URL」クエリ文字列パラメータを見て、ロジックを含むことができ、おそらく、あなたそれをデータベースの製造業者、または必要なものと照合することができます。

この例では、明らかにすべてののURLを取得し、myroute.phpにマップしています。別の例のようなものかもしれません:/

/メーカー/ソニー=> /manuf.php?name=sony
/メーカー:この場合

RewriteRule ^/manufacturers/(.*)$ manuf.php?name=$1 [QSA,L] 

、それはそうのようなURLをマッピングしますサムスン=> /manuf.php?name=samsung 等...


この場合、あなたのmanuf.phpファイルがnameクエリ文字列パラメータに基づいてデータベースを検索できます。

+0

私には起こりませんでした...ありがとう:)しかし、それでは?私はそれを適切なURLにheader()経由で送りますか?どのように私はかなりのURLを維持するのですか? –

+1

@A-OK mod_rewriteが "内部"リダイレクトを使用する場合は、ユーザーは再書き込み前の "pretty" URLを参照します。宛先が別のホスト上にある場合や、HTTPリダイレクトを使用するよう明示的に指示された場合は、その例はありません。 –

+0

私は上記の例に関して質問していました。書き換えによってすべてのURLがmyroute.phpファイルにリダイレクトされると、それはheader()経由でさらにリダイレクトされます(それ以外の方法はわかりません)。ユーザーが適切なページに到着すると、どのURLが表示されますか? –

2

同様の解決策を探している間にこの答えを見つけました。もう少し調べてみると、mod_rewriteにはRewriteMapという指令があり、PHPや別のスクリプト言語を実行する必要はありません。

テキストファイル、DBMファイル、外部スクリプト、またはSQLクエリを使用してマッピングルールを定義できます。

私はそれが助けてくれることを願っています!

+0

うわー、ありがとう、これは私が必要としていたものです。特に[プレーンテキストマップ]に関するこの行(http://httpd.apache.org/docs/trunk/rewrite/rewritemap.html#txt):http://example.com/product/televisionがリクエストされた場合、 RewriteRuleが適用され、リクエストは内部的にhttp://example.com/prods.php?id=993にマッピングされます – cnlevy

関連する問題