Mod_rewriting строка запроса в файл SWF - PullRequest
1 голос
/ 01 февраля 2010

Я пытаюсь использовать mod_rewrite, чтобы очистить URL-адреса флэш-видеоплеера. Во-первых, вот исходный URL, который я пытаюсь переписать:

library/player.swf?path=path-to-file.flv

Приведенный выше URL отлично работает, когда я обращаюсь к нему напрямую. Я закодировал SWF для автоматического захвата параметра пути и воспроизведения видео. Там нет проблем. Вот мое правило перезаписи:

RewriteRule ^player/(.+)$ library/player.swf?path=$1 [QSA,L]

При посещении проигрывателя URL / path-to-file.flv я получаю swf, но видео не загружается. Я установил всплывающее окно во флэш-памяти, чтобы сообщить мне имя пути для целей отладки, и похоже, что путь вообще не передается.

С другой стороны, если я использую то же правило, но указываю на test.php вместо player.swf, файл test.php может отобразить параметр.

Итак, вопрос сводится к тому, я что-то делаю неправильно или невозможно отправить строку запроса в SWF через mod_rewrite?

Ответы [ 4 ]

2 голосов
/ 01 февраля 2010

Невозможно использовать механизм, который вы пытаетесь там. Помните, что .swf обрабатывается на стороне клиента, поэтому все, что делает сервер - отправляет файл клиенту. Строка запроса не имеет к этому отношения, и сервер просто игнорирует ее.

Возможно прочитать параметры строки запроса в файле .swf, но опять-таки не в файле с прямым обслуживанием. Это опять-таки из-за того, как эти вещи работают ... для доступа к параметрам, .swf должен быть встроен в DOM, и тогда он сможет получить доступ к DOM и получить строку запроса через интерфейсы DOM, поэтому служил частью HTML-страницы.

Если это поможет, я часто видел способ получить параметры в файл .swf, используя PHP-скрипт для динамического создания тегов и установки параметров таким образом, которые соответствуют параметрам строки запроса, переменным базы данных. и т. д. Затем обрабатывается вся страница, а параметры передаются в приложение .swf при его запуске во время выполнения флэш-памяти.

1 голос
/ 02 февраля 2010

Я проголосовал за ответ Workmad3, но я хотел пойти дальше и опубликовать это альтернативное решение. Для моего правила перезаписи я использовал такое же правило, как и в исходном вопросе.

RewriteRule ^player/(.+)$ library/player.swf [L]

Затем в ActionScript сделайте что-то похожее на это:

var url:String = String(ExternalInterface.call("function(){return document.location.pathname.toString();}"));
var urlParts:Array = url.split("/");
var length:Number = urlParts.length;
var file:String = urlParts[length-1] + ".f4v";
Alert.show("The filename is: " + file);

Выше будет просто опубликовать имя файла в окне предупреждения, но дело в том, что вы можете теоретически использовать это для создания «чистых» URL. Это кажется немного хакерским, но вы могли бы заставить его работать.

0 голосов
/ 25 декабря 2012

Подождите, я думаю, что вы можете, но вы должны написать ActionScript, необходимый для анализа этих параметров, например, посмотрите на этот пример некоторых моих старых работ для уважаемой компании:

Не с готовностью посмотрите на FLA прямо передо мной, но, возможно, мой пример поможет пролить свет на вашу решимость. Поэтому, да, вы можете динамически анализировать переменные из флэш-памяти, но я полагаю, что у них должно быть место для записи этих переменных в качестве жесткого файла cookie для отслеживания этих переменных, и, следовательно, невозможность сохранить эту информацию на лету. Может быть, с некоторой конфигурацией сервера и перезаписью флэш-памяти вы могли бы, теоретически, делать то, что вы хотите.

В любом случае, возможно, напишите PHP-файл, который подходит для вашей динамической флэш-памяти, чтобы использовать ее для загрузки / перемещения / принудительного изменения переменных на вашем флэш-фильме при загрузке, или просто перезвоните в dom, используя js, чтобы переписать вашу флеш-память в зависимости от того, как Ваш отзыв от Дом. Много способов обойти вещи, если вы думаете нестандартно. Не стесняйтесь заглядывать в SWF, только не используйте его, это явно для примера ...

Пример: http://www.louierd.com/soe/itemsdetails/

Теперь в этом примере я использую flash с единственной целью определения высоты, необходимой для отображения внешнего HTML-кода, это было сделано для того, чтобы обеспечить надежный кросс-браузерный способ получения правильного размера для разных платформ и браузеров. Было мало поддержки, чтобы сделать это с помощью простого javascript, без необходимости писать длинный javascript с нуля, времени на это не было, поэтому я решил использовать flash, поскольку большинство других проектов, над которыми я работал в то время, были в значительной степени flash проекты так или иначе.

0 голосов
/ 01 февраля 2010

если вы добавите [R] к флажкам директивы, он выполнит внешнее перенаправление, которое должен увидеть клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...