Вопрос

Я использую сценарий PHP, который динамически генерирует прозрачные PNG для использования в качестве фона CSS из строки запроса, которая принимает значения RGBA и HSLA. Оригинальный скрипт можно найти здесь, Я только добавил поддержку HSLA.

Поскольку фоновые URL-адреса с строками запроса PHP не очень красивы, и потому, что кажется, что он сломает 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.

Заранее спасибо, и если кто-то хочет, чтобы моя поддержка HDLA с поддержкой сценария просто спроси. В любом случае, я рекомендую вам проверить это на его веб-сайте автора.

Это было полезно?

Решение

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}) будет соответствовать 1, 2 или 3 числа 0-9 подряд. Таким образом, «3», «10» и «100» и т. Д. Но он также будет соответствовать «999», поэтому вам нужно будет убедиться, что файл colors.php проверяет значения в ожидаемых диапазонах и т. Д.

Другие советы

Попробуй это:

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, / Активы / цвета / всегда обрабатываются цветами .php независимо от конфигурации mod_rewrite.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top