| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > Как сделать так, чтобы в Rewrite Rule работали... |
| Автор: Borland_Delphi_6 13.5.2005, 13:22 |
| САБЖ. Например код: RewriteEngine on Options FollowSymLinks -Indexes RewriteRule ^([a-z]+)-?\.jpg$ $1.php [NC,L,QSA] RewriteRule ^([0-9a-z]+)-([0-9a-z]+)-([0-9a-z_]*)-?(.*)$ $1-$4?$2=$3 [NC,QSA] Понимает цифры 0-9 и буквы a-z. А как заставить его работать со спец. символами и русскими буквами? |
| Автор: Borland_Delphi_6 15.5.2005, 15:24 |
| Народ, неужели никто не знает? Должен же быть способ! Или я объяснил глючно? |
| Автор: Borland_Delphi_6 16.5.2005, 13:11 |
| Объясняю подробно, как могу... Есть правило: ewriteRule ^([0-9a-z]+)-([0-9a-z]+)-([0-9a-z_]*)-?(.*)$ $1-$4?$2=$3 QSA] Его нужно превратить в: RewriteRule ^([0-9a-z]+)-([0-9a-z]+)-([0-9a-z_ !А ТАКЖЕ СИМВОЛ "%"!]*)-?(.*)$ $1-$4?$2=$3 [NE,QSA] Вот как это в регулярках записать? И еще: как сделать так, чтобы заглавные и строчные буквы различались? Т.е. в url можно было бы писать и то и то, но по GET они бы передавались в нужном регистре... |
| Автор: Mal Hack 16.5.2005, 14:01 |
| \ - обычно эскейпит спецсимволы. \. - точка. Для % возможно надо написать %%. |
| Автор: Borland_Delphi_6 16.5.2005, 14:03 |
| Через слеш пробовал. А вот %% еще нет. Пойду |
| Автор: Borland_Delphi_6 16.5.2005, 16:45 |
| Нифига |
| Автор: Mal Hack 16.5.2005, 17:15 |
| Borland_Delphi_6 а как вообще у тебя там % оказался? По логикет с % гначинается 16 ричный код символа не на ISO-en кодировке... |
| Автор: Borland_Delphi_6 17.5.2005, 12:31 |
| URLEncode возвращает коды символов, и начинаются они с %. %20 - пробел и т.д.... |
| Автор: Mal Hack 17.5.2005, 13:06 |
| Borland_Delphi_6 я тебя не понимаю малость. % означает что дальше идет код символа. % в имени файла быть не может. так зачем ьтебе их в реврайте как-то обрабатывать, если потом в скрипте надо декодировать? |
| Автор: Borland_Delphi_6 17.5.2005, 14:12 |
| Правильно, код символа. Мне нужно передать русский текст в GET'e, а потом сделать urlDEcode и вывести оригинал. |
| Автор: Mal Hack 17.5.2005, 14:22 |
| А при чем тут реврай-то? Пиши просто в паттерне - любой символ |
| Автор: Borland_Delphi_6 17.5.2005, 17:01 |
| Так. Еще раз. Сейчас URL работает такой: test.jpg-param-AnyEnglishLetterAndNumber А вот test.jpg-param-Any%20English%20Letter%20And%20Number - нет! Rewrite Rule под это не настроено! Вот как изменить его для данной задачи? (оригинал выше). |
| Автор: Mal Hack 17.5.2005, 17:07 |
| RewriteRule ^([0-9a-z]+)-([0-9a-z]+)-(.+?)-?(.*)$ $1-$4?$2=$3 [NE,QSA] |
| Автор: Borland_Delphi_6 18.5.2005, 14:19 |
| Internal Server Error |
| Автор: Mal Hack 18.5.2005, 14:29 |
| RewriteRule ^([0-9a-z]+)-([0-9a-z]+)-(.+?)-(.*)$ $1-$4?$2=$3 [NE,QSA] |
| Автор: Borland_Delphi_6 19.5.2005, 17:08 | ||
| Internal Server Error Эх, спасибо конечно, но видимо придется это реализовывать средствами PHP... Вот код, если интересно.
|
| Автор: Mal Hack 19.5.2005, 19:02 |
| Попробуй: RewriteRule ^([0-9a-z]+)-([0-9a-z]+)-(.+?)-(.+)$ $1-$4?$2=$3 [NE,QSA] |
| Автор: Borland_Delphi_6 19.5.2005, 20:35 |
| То же самое |
| Автор: Mal Hack 19.5.2005, 20:44 | ||
Код рабочий. При http://scripts.localhost/rewrite/sdf1-sdf2-sdf3-sdf4 редирект был на: http://scripts.localhost/rewrite/sdf1-sdf4?sdf2=sdf3 |
| Автор: Borland_Delphi_6 20.5.2005, 14:57 |
| Mal Hack Может быть, но в любом случае должно быть http://scripts.localhost/rewrite/sdf1-sdf2%20-sdf3%20-sdf4%20 Хотя у меня http 500. |
| Автор: Mal Hack 20.5.2005, 17:37 |
| Borland_Delphi_6 странно. У меня лишь 404 вылезла... Не более.. Попробуй вот так: RewriteRule ^(.+)-(.+)-(.+)-(.+)$ $1-$4?$2=$3 |
| Автор: Borland_Delphi_6 20.5.2005, 20:32 |
| Будет возможность, проверю. Пока у меня другой вопрос: как заставить его различать заглавные и строчные буквы, а то в GET'е всё строчным передаётся. Надеюсь модераторы не обидятся |
| Автор: Mal Hack 20.5.2005, 20:39 |
| В моем последнем рэгэ пофиг какие буквы. А вообще: [a-zA-Z] |
| Автор: Borland_Delphi_6 21.5.2005, 14:47 |
| Так если бы... Я тк Добавлено @ 14:50 Так если бы... Я так уже пробовал. Всё равно Get'ом передаёт только строчные буквы. Флаг NC не стоит. |
| Автор: Mal Hack 21.5.2005, 14:58 | ||
Значит Апаче так настроен. Вроде там былда директива отвечающая за подобгные преобразования. Borland_Delphi_6 у меня рэг работеат. как тебе нужно. Проверял. |
| Автор: Borland_Delphi_6 30.5.2005, 12:48 |
| Хм, действительно, на сервере все заработало! Mal Hack, спасибо! Вот что получилось: http://code.pp.ru/plug-r-getinformer |
| Автор: Mal Hack 30.5.2005, 16:26 |
| Ну вот и замечательно Будут вопросы, спрашивай еще http://vingrad.ru/WEB-SERVER-002835 - вот еще в качестве материальчика |