Реклама на сайте Advertise with us

Помогите с mod rewrite плиз

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 13.01.03
Сообщения: 1032
Рейтинг: 1146

Ссылка на сообщениеДобавлено: 26/10/15 в 15:49       Ответить с цитатойцитата 

есть строка:

http://domain.com/top/name_http://url.com/

разбираем так:

RewriteRule ^top/(.*)_(.*)$ top.php?name=$1&url=$2 [L,QSA]

и вроде реврайт работает, но есть одно "НО" в $2 в урле двойной слэш склеивается в один...

саппорт хоста говорит: проблема с двойным слешем исходит от Апача, mod_rewrite по RFC меняет на один слеш

есть решение в конфиге nginx прописать merge_slashes off но беда в том, что и реврайт нужно прописывать тоже в конфиге нгинкса...
что не есть гуд, т.к. сам я править этот конфиг не могу (из-за панели), а каждый раз дергать саппорт тоже путь не лучший...

может есть какое-то элегантное решение сабжа?...)

0
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 26/10/15 в 19:51       Ответить с цитатойцитата 

> mod_rewrite по RFC меняет на один слеш
элегантное решение - отказатся от mod_rewrite и использовать реврайты nginx или в php


и сдается мне что

http://domain.com/top/name_http://url.com/

совсем некорректный урл

0
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 26/10/15 в 20:51       Ответить с цитатойцитата 

Doctor писал:
есть строка:

http://domain.com/top/name_http://url.com/

разбираем так:

RewriteRule ^top/(.*)_(.*)$ top.php?name=$1&url=$2 [L,QSA]

и вроде реврайт работает, но есть одно "НО" в $2 в урле двойной слэш склеивается в один...

саппорт хоста говорит: проблема с двойным слешем исходит от Апача, mod_rewrite по RFC меняет на один слеш

есть решение в конфиге nginx прописать merge_slashes off но беда в том, что и реврайт нужно прописывать тоже в конфиге нгинкса...
что не есть гуд, т.к. сам я править этот конфиг не могу (из-за панели), а каждый раз дергать саппорт тоже путь не лучший...

может есть какое-то элегантное решение сабжа?...)


При создании таких линков нужно слеши, которые не являются частью path (физически или логически) пропускать через urlencode.

Что здесь видит апач?
http://domain.com/top/name_http://url.com/

path=/top/name_http://url.com/ и т.к. двойной слеш в пути по сути то же, что одинарный, ничего странного, что апач лишние слеши в PATH убирает.

Другое дело если http://url.com/ переставить в query
http://domain.com/top/name?http://url.com/

Здесь
path=/top/name
query=http://url.com/

и двойной слеш никуда не денется.

Если нужны линки именно вида http://domain.com/top/name_http://url.com/, тогда они должны приходить на сервер как http://domain.com/top/name_http:%2F%2Furl.com/

apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only

6
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 26/10/15 в 21:20       Ответить с цитатойцитата 

Как бы само напрашивается
Код:

RewriteRule ^top/(.*)_http://(.*)$ top.php?name=$1&url=http://$2 [L,QSA]

6
 



С нами с 13.01.03
Сообщения: 1032
Рейтинг: 1146

Ссылка на сообщениеДобавлено: 26/10/15 в 22:04       Ответить с цитатойцитата 

johndoe2 писал:
При создании таких линков нужно слеши, которые не являются частью path (физически или логически) пропускать через urlencode.

Другое дело если http://url.com/ переставить в query
http://domain.com/top/name?http://url.com/

Здесь
path=/top/name
query=http://url.com/

и двойной слеш никуда не денется.


о, вот это хорошая мысль... но тогда строку

http://domain.com/top/name?http://url.com/

такой конструкцией не разобрать - в реврайтах я не силен..(

RewriteRule ^top/(.*)?(.*)$ top.php?name=$1&url=$2 [L,QSA]

прошу еще раз помощи тогда, какое в этом случае должно быть RewriteRule?

0
 



С нами с 13.01.03
Сообщения: 1032
Рейтинг: 1146

Ссылка на сообщениеДобавлено: 26/10/15 в 22:06       Ответить с цитатойцитата 

gimcnuk писал:
Как бы само напрашивается
Код:

RewriteRule ^top/(.*)_http://(.*)$ top.php?name=$1&url=http://$2 [L,QSA]


о, вот и элегантное решение... smail54.gif

0
 



С нами с 13.01.03
Сообщения: 1032
Рейтинг: 1146

Ссылка на сообщениеДобавлено: 26/10/15 в 22:40       Ответить с цитатойцитата 

Doctor писал:
о, вот это хорошая мысль... но тогда строку

http://domain.com/top/name?http://url.com/

такой конструкцией не разобрать - в реврайтах я не силен..(

RewriteRule ^top/(.*)?(.*)$ top.php?name=$1&url=$2 [L,QSA]

прошу еще раз помощи тогда, какое в этом случае должно быть RewriteRule?


нашел решение сам:

RewriteRule ^top/(.*)$ top.php?name=$1&url=%{QUERY_STRING} [L,QSA]

всем спасибо... smail54.gif

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »