Страница 1 из 1

Нужна помощь по созданию RewriteRule

Добавлено: 12 фев 2015, 08:15
arrer
Добрый день!
Нужна помощь знатоков в создание правила для сайта через .htaccess.
Суть довольно проста: Имеется скрипт image.php, который запускается с параметрами image.php?name=ИМЯ&class=1&size=1&x=1&y=1
Нужно сделать так называемый ЧПУ и привести данную ссылку в читабельный вид (к примеру /ИМЯ_1_1_1_1.png).
Я создал данное правило:
RewriteRule ^(.*)_(.*)_(.*)_(.*)_(.*).png$ image.php?name=$1&class=$2&size=$3&x=$4&y=$5 [L]
Но проблема в том, что данный вариант работает только с Apache. Если выбрать Apache + Nginx, то выдает 404 ошибку (в дальнейшем будет переезд на хостинг именно с такой связкой).
Помогите создать правило. Нужно именно с расширением .png в конце.
P.S. Скрипт генерирует изображение (юзербар пользователя) с ником, размером и прочим, но не все форумы будут принимать php скрипт как изображение. Вот и нужно его скрыть таким образом.

Добавлено: 12 фев 2015, 10:04
Asmodey
1. А не проще это делать скриптом?
2. У нджайникса есть свой модуль коверканья урлов

Добавлено: 12 фев 2015, 17:57
arrer
1. Можно подробнее про скрипт (как создать, где создается итд).
2. Я так понял это идет настройка уже самого сервера. На Open Server доступ к этому есть, но на хостингах я этого мало где видел.

Кстати сервер выдает вот такое после перехода по ЧПУ, который работает на Apache
[error] 28048#28112: *17 CreateFile() "d:/openserver/domains/Test/generator/Nick_1_1_1_1.png" failed (2: The system cannot find the file specified), request: "GET /generator/Nick_1_1_1_1.png HTTP/1.1"

Добавлено: 12 фев 2015, 18:27
Asmodey
Ваш скрипт который картинку делает. Или который будет разбирать урл и вызывать как надо генератор.
Если файл такой-то отсутствует, то передать управление тому-то.
На апачи это делается примерно так
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . image_generator.php

Это точка входа от yii (чуток подправленная), легко нагуглить аналог для нжайникса.
У Вас будет немножко другое условие, ну и видимо скрипт :).
Уже в скрипте можно разбирать урл и делать что угодно.

ИМХО. Тут надо аккуратно подходить. Что как и как часто генерить. Эта картинка часто меняется, является ли она приватной и тп.? Я бы отдавал картинку статикой. При отсутствии, вызывал скрипт подготовки.

ЗЫ. А кто и почему не понимает php как источник картинки? Может там заголовки неправильно отдаются?
ЗЫЗЫ. Вай мэ!
ИМЯ_1_1_1_1.png
с таким аккуратней при создании файла в реальной файловой системе. А то можно такого насоздавать/наотдавать :) Погуглите как защищаться. Там надо фильтровать, приводить к каноническому виду и следить, чтоб куда не вылезли... И учитывать "особенности %!@^%#" форточек в этой области :( Например - большие буквы хранить, но не различать...