5

RGBa および HSLa 値を取るクエリ文字列から CSS 背景として使用する透明な PNG を動的に生成する PHP スクリプトを使用しています。元のスクリプトはここにあります。HSLa サポートのみを追加しました。

PHP クエリ文字列を含むバックグラウンド URL はあまりきれいではなく、IE 6 の透過 PNG ハックを破るように見えるため、mod_rewrite を使用して、この構文の .png が呼び出されたときにスクリプトが呼び出されるようにすることを考えました。

/assets/colors/h[0-360 value]_s[0-100 value]_l[0-100 value]_a[0-100 value].png

これは次のように書き換えられます:

/assets/colors.php?h=[0-360 value]&s=[0-100 value]&l=[0-100 value]&a=[0-100 value]

私が遭遇している問題は次のとおりです。

  • mod_rewrite で複数の変数を渡す
  • アンダースコアを区切り文字として使用する

これは、単一の変数を渡して PHP スクリプトで展開することで実行できることはわかっていますが、Apache で実行することをお勧めします。

事前に感謝します。スクリプトの HSLa 対応バージョンが必要な場合は、お問い合わせください。いずれにせよ、作者のウェブサイトで確認することをお勧めします。

4

2 に答える 2

3

mod_rewrite は中かっこ () 内のものに一致し、一致した順序でこれらを $1、$2 などと参照できます。したがって、これを使用して、中括弧内に配置するだけで複数の変数を抽出できます。

だから、このようなものはあなたのために働くでしょう、

RewriteRule ^assets/colors/h([0-9]{1,3})_s([0-9]{1,3})_l([0-9]{1,3})_a([0-9]{1,3}).png assets/colors.php?h=$1&s=$2&l=$3&a=$4 

([0-9]{1,3})連続する 0 ~ 9 の数字の 1、2、または 3 つに一致します。したがって、「3」、「10」、「100」などです。ただし、「999」にも一致するため、colors.php ファイルで値が期待される範囲内にあることを確認する必要があります。

于 2010-05-10T18:31:21.430 に答える
0

これを試して:

RewriteEngine on
RewriteRule /assets/colors/h([0-9]+)_s([0-9]+)_l([0-9]+)_a([0-9]+).png /assets/col.php?h=$1&s=$2&l=$3&a=$4 [QSA,L]

これを機能させるには、スクリプト名を変更する必要がありました。私が持っているのでOptions MultiViews、/assets/colors/ は、mod_rewrite の設定に関係なく、colors.php によって常に処理されます。

于 2010-05-10T18:29:26.427 に答える