複数の変数を使用した Mod_rewrite
-
25-09-2019 - |
質問
RGBa 値と HSLa 値を受け取るクエリ文字列から CSS 背景として使用する透明 PNG を動的に生成する PHP スクリプトを使用しています。オリジナルのスクリプトが見つかります ここ, HSLa サポートを追加しただけです。
PHP クエリ文字列を含むバックグラウンド URL はあまり美しくなく、IE 6 の透過 PNG ハックを破壊するように見えるため、次の構文の .png が呼び出されたときにスクリプトを呼び出せるように mod_rewrite を使用することを考えました。
/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 対応バージョンのスクリプトが必要な場合は、問い合わせてください。とにかく、作者のウェブサイトでそれをチェックすることをお勧めします。
解決
の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。あなたは、など。
他のヒント
これを試してみてください
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
を持っているので、/資産/色/関係なく、常にmod_rewriteの設定のcolors.phpによって処理されます。