2009-06-01 13 views
3

私は新しいサイトを開発しています。私は書き換えルールを.htaccessファイルの代わりにデータベースに保存したいと思います。書き換えルールをデータベースに保存するにはどうすればよいですか?

私はOpensef(http://sourceforge.net/projects/opensef/)をJoomla!で使用する別のサイトを持っています。これをやっているインストールが、それは100%もどのようにボンネットの下で動作します。

これらのルールをデータベースに保存し、要求に応じてクエリを実行し、クリーンURLが見つかった場合はそのURLにリダイレクトする方法を教えてください。 .htaccessファイルをロードする代わりにこれを行うより良い方法がありますか(1000のエントリがあるかもしれません)?

は、あなたがこのようなデータベースからデータを取得し、mod_rewriteのマップを作成することができますPHPやPythonのファイルを実行するなどの外部ソースからマップを生成するためにmod_rewriteを得ることができ、

+1

これがページの応答時間とサーバーの負荷をどのようにするか考えていますか?ルールはすべて(画像、スタイルシート、スクリプトなど)に当てはまるので、ページあたり20,000以上のルールを処理できます。私はあなたの戦略を再考すべきだと思います。 – SpliFF

答えて

6

、ありがとうございました。

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html (右下に見る)

例えば

RewriteMap quux-map  prg:/path/to/map.quux.pl 

幸運

+0

良い提案! –

+0

このプログラムは高速でなければならないことに注意してください。このプログラムは、Webサーバー、画像、CSSファイルまでのすべての要求に対して実行されます。 – Eli

+2

Apache/Rewriteはマップをロードし、思い出した場合はSIGHUPまでキャッシュします。 –

0

グラブUrlRewriteFilter、DBを使用するように肉屋、とTomcatでそれを使用Apacheの代わりに。

Tomcatは洗練されたWebサーバーであり、Apacheが(PHP用のFastCGIのように)できることがたくさんあります。このようなものを書くことは、Apacheの場合と比べて簡単です。

1

私は、データベースに格納されたルールを使用するための最良の方法であると思う:

  • は、サイトの管理パネルを使用してデータベース内のルールを保管してください。
  • データベースを更新した後、サーバーサイド言語ソリューションを使用してDBのルールを使用して新しい.htaccessを生成します。
  • 古い.htaccessを新しいものに置き換えます。

これにより、サーバーの負荷が軽減されます。これはAiden Bellのソリューションに似ています。

2

これらのページはすべて最終的にJoomlaにあると仮定して、.htaccessまたはmod_rewriteを使用するのは間違いだと思います。

私は、あなたがOpenserfの仕組みを学ぶ方がはるかに良いと思います。私はそれがデータベースを照会し、ヒットした場合PHP経由でリダイレクトを発行するすべての要求に対して、早期に実行されるコードの断片があると思います。このアプローチのもう1つの利点は、Joomlaが最初の場所でクリーンなバージョンを指すようにページ上にリンクを書き直して、ユーザーに不要なリダイレクトを保存させることが可能であることです。

ちなみに、これはPathautoモジュール私はDrupalでこれを行い、数千ページのかなり大量のサイトでこれを常に使用しています。

0

到着予定の不明なリクエストをすべて処理し、その応答を小さなスクリプトに渡して&のリダイレクトを生成するという、1つの書き換えルールが必要になります。書き換えルールを完全にスキップして、Apache ErrorDocument directiveを使用して、未知のURLをスクリプトに渡すこともできます。

あなたはこの「新しいサイト」の詳細について細かくはっきりしていますが、すべての着信URLを処理しているアプリの場合は、Front Controllerを自分で作成することを検討することをおすすめします。多くの(ほとんどの?)Webアプリケーションフレームワークがこのアプローチを採用しています。

関連する問題