С нами с 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 но беда в том, что и реврайт нужно прописывать тоже в конфиге нгинкса...
что не есть гуд, т.к. сам я править этот конфиг не могу (из-за панели), а каждый раз дергать саппорт тоже путь не лучший...
может есть какое-то элегантное решение сабжа?...)
|
|
|
|
С нами с 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/
совсем некорректный урл
|
|
|
|
С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032
|
Добавлено: 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]
|
|
|
|
|
С нами с 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?
|
|
|
|
С нами с 13.01.03
Сообщения: 1032
Рейтинг: 1146
|
Добавлено: 26/10/15 в 22:06 |
gimcnuk писал: | Как бы само напрашивается
Код: |
RewriteRule ^top/(.*)_http://(.*)$ top.php?name=$1&url=http://$2 [L,QSA]
| |
о, вот и элегантное решение...
|
|
|
|
С нами с 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]
всем спасибо...
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |