У меня небольшие проблемы с перестройкой мод. Мой друг пишет сценарий, который позволяет загружать изображения.
То, что мы хотим сделать, – это позволить пользователю добавлять доменное имя к прямой ссылке изображения, и сценарий будет извлекать изображение из предоставленного URL-адреса.
Например, если изображение находится по адресу: http://www.test.com/image.jpg , добавление domain.com /http://www.test.com/image.jpg позволит скрипту получить этот URL-адрес ( test.com), чтобы получить изображение, которое мы хотим.
EDIT: HTTP находится перед URL-адресом, потому что я не хочу, чтобы пользователь должен был удалить HTTP вручную. Они видят изображение в своем браузере, они добавляют «domain.com» перед ним, http и все, и сценарий извлекает это изображение и сохраняет его на нашем сервере.
Правило, которое я использую:
RewriteRule ^([\w|.|/]+(jpg|png|gif))$ /upload.php?url=http://$1 [B,L,NC,R=302]
это правильно соответствует URL-адресам, но двоеточие в http: // вызывает проблемы.
Если пользователь вводит: domain.com/www.test.com/image.jpg, он работает.
Если пользователь вводит: domain.com/http://www.test.com/image.jpg, он не работает, и я получаю запрещенную страницу 403 (XAMPP в Windows).
Если пользователь вводит: domain.com/http//www.test.com/image.jpg, он работает (без двоеточия в http).
EDIT: Работая, я имею в виду, если я тестирую его локально, я получаю URL, который я передаю в параметре $ _GET ['url'] правильно, вместо того, чтобы видеть ошибку 403.
Не могли бы вы рассказать мне, что не так с этим правилом и как его исправить? Или любые альтернативные решения для достижения желаемого поведения?
Спасибо.
Ну, думаю, я нашел проблему. Это было не регулярное выражение, а mod_rewrite.
Так что это ошибка в Apache в Windows, которая была объявлена WONTFIX.
Для справки см. Этот поток StackOverflow: и этот отчет об ошибке
Я отправляю то, что нашел, и рассмотрю этот вопрос. Спасибо вам всем!
Вы можете использовать urlencode () в php
Этот подход является громоздким, подверженным ошибкам и небезопасным (например, URL-адрес изображения не требуется для завершения этих хорошо известных расширений файлов)
Если я понимаю ваш случай использования, он начинается, когда пользователь просматривает веб-сайт, и он просматривает изображение, и он хочет поделиться им с помощью вашего сервиса. Затем он http://your.sharing.service
вручную http://your.sharing.service
в адресной строке браузера, непосредственно перед любым текстом. Затем вы используете mod_rewrite
для запуска вашего скрипта, но я думаю, что ваше регулярное выражение (и ваша служба тоже) потерпит неудачу несколькими непредсказуемыми способами.
Я никогда не использовал такую услугу, и я думаю, что предпочтительным является стандартный подход к использованию кнопки для отправки URL-адреса на какой-либо скрипт (скажем, http://my.service.com/upload?url=...
) ,
Проблема в вашем регулярном выражении …
Пытаться:
^((http|https)+[\:\/\/\w\.]+(jpg|png|gif))$