Page 1 of 2

Nginx окончание ссылок

Posted: Sat Aug 23, 2014 9:59 pm
by wskeal
Привет.
Вот такую конструкцию из фака не могу освоить под nginx

RewriteCond %{QUERY_STRING} ^param=(.+)$
RewriteRule ^gallery/([^/]+)/index.html$ /scj/cgi/out.php?link=images/%1&url=content&slug=$1 [L]

Пробую вот так
if ($args ~ “param=(.+)”) {
rewrite ^/video/([^/]+)/$ /scj/cgi/out.php?link=images/$query_string&url=content&slug=$1 last;
}

не работает, на трейд не кидает, клики не считает. Синтаксис может не верный. Покурил документацию, всё равно не работает. Может вместо $query_string другое что-то нужно писать?

Хочу назначить свой параметр для ротации.

Re: Nginx окончание ссылок

Posted: Wed Aug 27, 2014 3:23 am
by admin
А print_r($_GET); что говорит в шаблон если добавить ? что приходит в скрипт ?

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 8:30 pm
by wskeal
Выдаёт вот это
Array ( [link] => images/param=6x6x32084 [url] => content [slug] => teens-for-lucky-guy [param] => 6x6x32084 [content_id] => f16fa178d708e3d5e5ca494b7e724696 [tag_ids_list] => Array ( [0] => 7 [1] => 89 [2] => 145 ) )

При этом в сабе у меня так

<a href="/v/<!--GALLERY_SLUG-->/" id='param=<!--THUMB_LINK-->' >

ну и скрипт который подставляет и при клике делает вот так

http://domain.com/v/teens-for-lucky-guy ... =6x6x32084

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 8:31 pm
by admin
Видно что парам тут лишнее
должно получатся

[link] => images/6x6x32084

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 8:36 pm
by wskeal
Ну да, я понял. Потому что реврайт неверный.

Щас потыкаю разные реврайты, посмотрю на print что выдаёт.

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 8:43 pm
by admin
Главное что бы был ясен смысл: в линке кодируем параметр как угодно, потом либо в реврайтайте либо в common.php приводим его в обычный вид images/12x34x567

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 9:15 pm
by wskeal
Хорошо, если вот такой реврайт не работает как нужно
if ($args) {
rewrite ^/v/([^/]+)/$ /scj/cgi/out.php?link=images/$query_string&url=content&slug=$1 last;
}

И подставляет
images/param=6x6x32084
а не
images/6x6x32084
то есть приставка "param=" лишняя

То в common.php нужно как-то удалить эту "param=" ?

Что-то типа?

Code: Select all

if (isset($_GET['param'])) {
$_GET['link'] = 'images/' . str_replace('param=', '', $_GET['param']);
}
Ох чуется намудрил и совсем не то это.
Мне не нужно заменять символы внутри 6x6x32084 на точки, или еще на что-то. Мне нужно убрать этот param чтоб клики считались нормально.

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 9:19 pm
by admin
Можно просто убрать его у себя в темпелйте id='param=<!-

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 9:26 pm
by wskeal
Ну оно так и работало всегда, но во первых валидатор ругается, говорит что id должно начинаться с буквы а не с цифры. Во-вторых паранойя по поводу гугла, чтоб было всё максимально разнообразно от сайта к сайту.

Ну и наконец через htaacess же работает у всех, через nginx тоже как-то должно наверное.

Re: Nginx окончание ссылок

Posted: Tue Sep 02, 2014 9:37 pm
by admin
Код

Code: Select all

if (isset($_GET['param'])) {
$_GET['link'] = 'images/' . str_replace('param=', '', $_GET['param']);
}
должен работать.
Просрьте что вы его записали туда, там смотрели и тп, те обычные ошибки невнимательности.