Регистрация...

Eserv Forum / E4 / Eserv 4 beta / Поддержка .htaccess в Е4

wikipost // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
В предыдущих версиях, по-моему, .htaccess не поддерживался. А что в Е4?
 
Комментарии к этой версии (08.09.2010 15:24) [~matveeva] 1956758f
АвторДатаТекстtags
ili_a08.09.2010 16:26
ред: 09.09.2010 13:46
E4 .htaccess не поддерживает. Но зато поддерживает OnRequest.rules.txt. Его можно положить в корневую папку сайта, и он будет выполняться при каждом запросе.
К примеру:
LOGIN UID @ 0= | Unauthorized "My Domain" \EOF — запрос авторизации
DocumentRoot: d:\!html\ofis\ — изменение DocumentRoot
DirectoryIndex: index.html index.pl
Uri / 0= | Redirect / — явная пересылка в корень при любом запросе, Wikki не выводится
Uri /arxiv* | VirtualRoot: "\\Arxiv\\Arxiv_ofis" — виртуальные каталоги (при отсутствии индексного файла, список файлов не выводится)
Moved http://www.newdomain.ru/ — пересылка сразу на другой сайт
wikipost
ili_a08.09.2010 16:40
ред: 13.06.2012 21:38
Разметку Wikki можете посмотреть здесь http://www.eserv.ru/Разметка, или у меня в блоге форума, там выложил то, что ac рассказал, а что и сам "нарыл", может пригодится (пока полного описания нет) http://forum.eserv.ru/~ili_a/EservWiki?mid=4
Правда там немного кривовато отображается, у меня на внутреннем портале все нормально
wikipost
matveeva09.09.2010 07:33
ili_a пишет: OnRequest.rules.txt.
О! Сколько новой информации! Начинаю потихоньку осваивать. Спасибо!
wikipost
ac09.09.2010 07:55
ред: 09.09.2010 07:56
ili_a, давайте вики называть Wiki, а не Wikki. Все те Wacko и Wakka, которые иногда мелькают на старых вики-страницах сайта — php программы, с которыми у нас ничего общего кроме подмножества вики-разметки, и их родовое заиККание мы имеем право не распространять на название нашей вики. Лучше использовать "E4Wiki", если ничего лучше не придумаем http://forum.eserv.ru/E4Wiki
wikipost
matveeva09.09.2010 13:16
ред: 09.09.2010 13:18
ili_a, а есть там механизм подстановки параметров? Аналог вот такой строки из .htaccess У меня там таких полно.
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)(/)?$ /site.php?alias=$1&sid=$2 [L]
wikipost
ili_a09.09.2010 13:56
matveeva пишет: ili_a, а есть там механизм подстановки параметров? Аналог вот такой строки из .htaccess У меня там таких полно.
Ну так далеко я не зашел
Насколько я понимаю, будут работать любые правила написанные на встроенном языке. Видимо вам надо смотреть
Uri /progs/* | Replace /Forums/
А вот как реализовать подстановку это к ac.
wikipost
matveeva09.09.2010 14:06
ili_a пишет: Ну так далеко я не зашел
Всегда сначала кажется, что ты на опушке. а потом бац! и лес кругом!
ili_a пишет: будут работать любые правила написанные на встроенном языке.
Видимо, да. Но уж больно не хотелось влезать плотно и изучать... Думала, какие-нибудь примерчики есть, я бы с них и списала. А это
ili_a пишет: Uri /progs/* | Replace /Forums/
я уже посмотрела. Маловато будет...
wikipost
ac11.09.2010 04:24
Сейчас будет многовато Включил в acWEB старинную библиотеку поддержки regexp. Вот сборка с ней: http://www.eserv.ru/download/acWEB_2010-09-11.rar (pcre.dll должна лежать в том же каталоге, что и acWEB4.exe, а не в ext).

Указанное RewriteRule тогда запишется как-то так:
URI " ([a-zA-Z0-9_-]+)/([0-9]+)(/)" STR@ PcreGetMatch | 2DROP " /site.php?alias={s}&sid={s}" STR@ SetUri 2DROP
(в одну строку)

Если так заработает, то сделаю сокращенную форму записи таких правил — обёртку вокруг универсального PcreGetMatch.

P.S. Не сделал этого раньше, т.к. апачевый mod_rewrite сильно недолюбливаю. Он нужен только тем php-программам, которые не умеют работать с переменной PATH_INFO, а "красивые URL" иметь хотят. Обычно при запуске таких программ под Eserv достаточно положить такой программе в корень маленький 404.php с обработкой (выборкой из PATH_INFO) этих параметров там. Получается нормальный код и значительная экономия на регэкспах (полное их отсутствие в основном цикле обработке URL'ов).

Но раз у вас "там таких полно", то, конечно, проще перенести готовые правила PCRE всей пачкой, а не возиться с каждым по отдельности. Так что испытайте на каком-нибудь одном, а я потом добавлю команду похожую на RewriteRule.
wikipost
matveeva13.09.2010 09:25
ac пишет: Сейчас будет многовато
Прямо руки потираю в предвкушении (жалко смайлика такого нет )
ac пишет: Если так заработает
Буду пробовать.
ac пишет: Он нужен только тем php-программам, которые не умеют работать с переменной PATH_INFO
К сожалению, мне этот код достался "as is". За большие деньги был написан сайт, который я теперь периодически "дотачиваю напильником" И чтобы для тестирования сделать его доступным в сети ( а не только у меня на машине с апачем), хотела воспользоваться Е4. При этом не хочется, чтобы сильно отличался код в локальном варианте и боевом, а то запутаюсь.
ac пишет: достаточно положить такой программе в корень маленький 404.php
Таких хитростей я не знала, попробую, спасибо.
ac пишет: Но раз у вас "там таких полно",
:-[ 7 строк... Не так и полно, конечно.
ac пишет: Так что испытайте на каком-нибудь одном
Ок, спасибо.
wikipost
matveeva13.09.2010 11:07
ред: 13.09.2010 11:08
После перезапуска нового acWEB в журнале вот такие ошибки:
EXCEPTION! CODE:C0000005 ADDRESS:65EC7544 WORD:<?not found> USER DATA: 0CFD004C THREAD ID: 00000DF0 HANDLER: 0CFBEEEC ** Exception time: Mon, 13 Sep 2010 11:23:58 +0400 ** Thread number/reuse/id:397 0 3568 ** API Calls: pcre_exec sqlite3_finalize STACK: (1105) 00000009 0CFDAFA0 00000000 031D9068 0055412A 0CFBEE88 [0CFC8078] RETURN STACK: 0CFBEDE8 : 0CFD004C 0CFBEDEC : 0CFBFFDC 0CFBEDF0 : 0CFD004C 0CFBEDF4 : 0000001D 0CFBEDF8 : 00000000 0CFBEDFC : 00000003 0CFBEE00 : 00000003 0CFBEE04 : 00000020 0CFBEE08 : 031D907E 0CFBEE0C : 00000000 0CFBEE10 : 00000000 0CFBEE14 : 00000000 0CFBEE18 : 0CFDAF9F [...] 0CFBEEB0 : 000007E0 0CFBEEB4 : 7FF89000 0CFBEEB8 : 81FBE600 0CFBEEBC : 0CFBFFC0 0CFBEEC0 : 81901AC8 0CFBEEC4 : 0CFBFFA0 0CFBEEC8 : 0CFD004C 0CFBEECC : 005B693D PcreExec 0CFBEED0 : 005B6A85 PcreGetMatch 0CFBEED4 : 031D9068 0CFBEED8 : 0CFDAFA0 0CFBEEDC : 00567CD7 INTERPRET_ 0CFBEEE0 : 00567D61 INTERPRET 0CFBEEE4 : 005683F1 TranslateFlow 0CFBEEE8 : 00555194 CATCH 0CFBEEEC : 0CFBEF38 0CFBEEF0 : 0CFBFFBC 0CFBEEF4 : 00574D17 RECEIVE-WITH 0CFBEEF8 : 0CFC6B14 0CFBEEFC : 0000000A 0CFBEF00 : 00000000 0CFBEF04 : 00000000 0CFBEF08 : 00000000 0CFBEF0C : 00000000 0CFBEF10 : 00000000 0CFBEF14 : 00000000 0CFBEF18 : 0CFC3CF0 0CFBEF1C : 00000000 0CFBEF20 : FFFFFFFF [...] 0CFBEF98 : 005CF8F4 DavList 0CFBEF9C : 005C1BA2 DoCommand 0CFBEFA0 : 00553294 (LocalsExit) 0CFBEFA4 : 00000004 0CFBEFA8 : 005CF8F4 DavList 0CFBEFAC : 00555194 CATCH 0CFBEFB0 : 0CFBEFF0 0CFBEFB4 : 0CFBFFB8 0CFBEFB8 : 005680FD EVALUATE-WITH 0CFBEFBC : 00000006 0CFBEFC0 : 00000000 0CFBEFC4 : 00000000 0CFBEFC8 : 0CFD1498 0CFBEFCC : 00000000 0CFBEFD0 : 00000000 0CFBEFD4 : 00000000 END OF EXCEPTION REPORT 2010-09-13 11:23:57;192.168.16.14;Error 1073741819 in the rule file "D:\web/delica.local/OnRequest.rules.txt", line: 1, char: 54 SD2: 8;397;0;1;GET;delica.local;/site.php;ERR_ONREQ; EXCEPTION! CODE:C0000005 ADDRESS:00572E1C WORD:FREE USER DATA: 0CFD004C THREAD ID: 0000049C HANDLER: 0CFBEF38 ** Exception time: Mon, 13 Sep 2010 11:28:39 +0400 ** Thread number/reuse/id:523 0 1180 ** API Calls: pcre_exec sqlite3_finalize STACK: (2) 81FBE600 7FF89000 00000820 00000000 00000000 00000000 [0CFC759C] RETURN STACK: 0CFBEEF4 : 0CFC5ADC 0CFBEEF8 : 00574D2D RECEIVE-WITH 0CFBEEFC : 0000000A 0CFBEF00 : 00000000 0CFBEF04 : 00000000 0CFBEF08 : 00000000 0CFBEF0C : 00000000 0CFBEF10 : 00000000 0CFBEF14 : 00000000 0CFBEF18 : 0CFC3BC8 0CFBEF1C : 00000000 0CFBEF20 : FFFFFFFF 0CFBEF24 : 00000000 0CFBEF28 : 00574E3A INCLUDE-FILE_new 0CFBEF2C : 000005F0 0CFBEF30 : 00568503 (INCLUDED1) 0CFBEF34 : 00555194 CATCH 0CFBEF38 : 0CFBEF50 0CFBEF3C : 0CFBFFB4 0CFBEF40 : 005685A3 INCLUDED_STD 0CFBEF44 : 00000000 0CFBEF48 : 00568617 INCLUDED 0CFBEF4C : 00555194 CATCH 0CFBEF50 : 0CFBEF7C 0CFBEF54 : 0CFBFFB4 0CFBEF58 : 005BA611 IncludeWithError 0CFBEF5C : 005BA77D IncludeWithErrorIfExists 0CFBEF60 : 005BB18C IncludeIfExists 0CFBEF64 : 007FD6AF http\OnRequest 0CFBEF68 : 005BA872 EvalRules 0CFBEF6C : 005BAE89 EvalRules [...] 0CFBEF98 : 005CF8F4 DavList 0CFBEF9C : 005C1BA2 DoCommand 0CFBEFA0 : 00553294 (LocalsExit) 0CFBEFA4 : 00000004 0CFBEFA8 : 005CF8F4 DavList 0CFBEFAC : 00555194 CATCH 0CFBEFB0 : 0CFBEFF0 0CFBEFB4 : 0CFBFFB8 0CFBEFB8 : 005680FD EVALUATE-WITH 0CFBEFBC : 00000006 0CFBEFC0 : 00000000 0CFBEFC4 : 00000000 0CFBEFC8 : 0CFD1498 0CFBEFCC : 00000000 0CFBEFD0 : 00000000 0CFBEFD4 : 00000000 END OF EXCEPTION REPORT
Возможно, связано с моими попытками настроить OnRequest.rules.txt
wikipost
pig13.09.2010 11:21
matveeva пишет: D:\web/delica.local/OnRequest.rules.txt", line: 1

Процитируйте сюда, что там имеет место быть.

P.S. Это у меня с установкой новой Оперы цитирование поломалось или что-то в новом acWEB?
wikipost
matveeva13.09.2010 11:38
цитирование поломалось — Не, у меня в ФФ тоже не работает.
Сейчас уже ничего не процитирую, 100 раз все поменяла. . Как-то странно, на одном и том же OnRequest.rules.txt то страница показывается без всяких EXCEPTION , а то при обновлении (по F5) выдает кучу EXCEPTION. А потом еще неск. раз F5 — и никаких ошибок...Сейчас в OnRequest.rules.txt вот что:
DirectoryIndex: site.php URI " ([a-zA-Z0-9_-]+)/(/)" STR@ PcreGetMatch | 2DROP " /site.php?alias={s}" STR@ SetUri 2DROP URI " ([a-zA-Z0-9_-]+)/([a-zA-Z_-]+)(/)" STR@ PcreGetMatch | 2DROP " /site.php?alias={s}&subalias={s}" STR@ SetUri 2DROP URI " ([a-zA-Z0-9_-]+)/([0-9]+)(/)" STR@ PcreGetMatch | 2DROP " /site.php?alias={s}&sid={s}" STR@ SetUri 2DROP URI " ([a-zA-Z0-9_-]+)/page/([0-9]+)(/)" STR@ PcreGetMatch | 2DROP " /site.php?alias={s}&page={s}" STR@ SetUri 2DROP

А вызываю http://delica.local:3130/site.php
wikipost
pig13.09.2010 11:58
Это тот OnRequest.rules.txt, на который ошибка указывает?
wikipost
matveeva13.09.2010 12:02
К этому OnRequest.rules.txt при обновлении F5 вылетает пачка EXCEPTION. Вот журнал:
EXCEPTION! CODE:C0000005 ADDRESS:7C911F6E WORD:<?not found> USER DATA: 0DCD004C THREAD ID: 000005E4 HANDLER: 0DCCEF48 ** Exception time: Mon, 13 Sep 2010 13:06:21 +0400 ** Thread number/reuse/id:1746 0 1508 ** API Calls: pcre_exec sqlite3_finalize STACK: (1084) 0D047284 00000010 00000009 0D040000 0055412A 0DCCEEDC [0D040101] RETURN STACK: 0DCCECB4 : 0DCD004C 0DCCECB8 : 0DCCFFD8 0DCCECBC : 0DCD004C 0DCCECC0 : 0DCD004C 0DCCECC4 : 00000000 0DCCECC8 : 00000000 0DCCECCC : 00000000 0DCCECD0 : 0DCCEDC0 0DCCECD4 : 65EC5452 0DCCECD8 : 0DCDAEE4 0DCCECDC : 03226636 0DCCECE0 : 00000002 0DCCECE4 : 0DCCEE30 [...] 0DCCEF0C : 7FF83000 0DCCEF10 : 81FBA600 0DCCEF14 : 0DCCFFC0 0DCCEF18 : 0DCCFF9C 0DCCEF1C : 0DCD004C 0DCCEF20 : 00572A1A ALLOCATE 0DCCEF24 : 00572C17 STACK_MEM 0DCCEF28 : 00572C83 ALLOCATE 0DCCEF2C : 00000004 0DCCEF30 : 005794E4 sALLOT 0DCCEF34 : 0057977F "" 0DCCEF38 : 005D45D1 >File 0DCCEF3C : 005D46A9 Uri>File 0DCCEF40 : 005D470E InitFilename 0DCCEF44 : 00555194 CATCH 0DCCEF48 : 0DCCEF58 0DCCEF4C : 0DCCFFBC 0DCCEF50 : 005D477F FILENAME 0DCCEF54 : 00555194 CATCH 0DCCEF58 : 0DCCEF7C 0DCCEF5C : 0DCCFFBC 0DCCEF60 : 007FC08B http\DefFileHandler 0DCCEF64 : 007FD881 http\OnRequest 0DCCEF68 : 005BA872 EvalRules 0DCCEF6C : 005BAE89 EvalRules 0DCCEF70 : 0000000E 0DCCEF74 : 005D2354 EMPTY 0DCCEF78 : 00555194 CATCH 0DCCEF7C : 0DCCEFB0 [...] 0DCCEF98 : 005CF8F4 DavList 0DCCEF9C : 005C1BA2 DoCommand 0DCCEFA0 : 00553294 (LocalsExit) 0DCCEFA4 : 00000004 0DCCEFA8 : 005CF8F4 DavList 0DCCEFAC : 00555194 CATCH 0DCCEFB0 : 0DCCEFF0 0DCCEFB4 : 0DCCFFB8 0DCCEFB8 : 005680FD EVALUATE-WITH 0DCCEFBC : 00000006 0DCCEFC0 : 00000000 0DCCEFC4 : 00000000 0DCCEFC8 : 0DCD1498 0DCCEFCC : 00000000 0DCCEFD0 : 00000000 0DCCEFD4 : 00000000 END OF EXCEPTION REPORT EXCEPTION! CODE:C0000005 ADDRESS:7C911F6E WORD:<?not found> USER DATA: 0DCD004C THREAD ID: 000005E4 HANDLER: 0DCCEF14 ** Exception time: Mon, 13 Sep 2010 13:06:21 +0400 ** Thread number/reuse/id:1746 0 1508 ** API Calls: pcre_exec sqlite3_finalize STACK: (1098) 00000000 0000000D 00000009 0D040000 0055412A 0DCCEEA4 [0D040101] RETURN STACK: 0DCCEC7C : 0DCD004C 0DCCEC80 : 0DCCFFE4 0DCCEC84 : 0DCD004C 0DCCEC88 : 00000000 0DCCEC8C : 0B0E9F08 0DCCEC90 : 0B0E9EF0 0DCCEC94 : 0B0EA020 0DCCEC98 : 00000010 0DCCEC9C : 00000000 0DCCECA0 : 00000000 0DCCECA4 : 00000000 0DCCECA8 : 00000008 0DCCECAC : 00000008 [...] 0DCCEED8 : FFFFFFFF 0DCCEEDC : 7C8399F3 0DCCEEE0 : 0DCCFFA8 0DCCEEE4 : 0DCD004C 0DCCEEE8 : 00572A1A ALLOCATE 0DCCEEEC : 00572C6D ALLOCATE 0DCCEEF0 : 00000009 0DCCEEF4 : 00579475 SALLOT 0DCCEEF8 : 005794D4 sALLOT 0DCCEEFC : 0057977F "" 0DCCEF00 : 00579DE6 ((")) 0DCCEF04 : 00553294 (LocalsExit) 0DCCEF08 : 00000004 0DCCEF0C : 00000000 0DCCEF10 : 00555194 CATCH 0DCCEF14 : 0DCCEF58 0DCCEF18 : 0DCCFFB8 0DCCEF1C : 005680FD EVALUATE-WITH 0DCCEF20 : 00000006 0DCCEF24 : 00000000 0DCCEF28 : 00000000 0DCCEF2C : 0D043AD0 0DCCEF30 : 00000000 0DCCEF34 : FFFFFFFF 0DCCEF38 : 00000000 0DCCEF3C : 00579F65 (") 0DCCEF40 : 00553294 (LocalsExit) 0DCCEF44 : 00000004 0DCCEF48 : 0000007B [...] 0DCCEF98 : 005CF8F4 DavList 0DCCEF9C : 005C1BA2 DoCommand 0DCCEFA0 : 00553294 (LocalsExit) 0DCCEFA4 : 00000004 0DCCEFA8 : 005CF8F4 DavList 0DCCEFAC : 00555194 CATCH 0DCCEFB0 : 0DCCEFF0 0DCCEFB4 : 0DCCFFB8 0DCCEFB8 : 005680FD EVALUATE-WITH 0DCCEFBC : 00000006 0DCCEFC0 : 00000000 0DCCEFC4 : 00000000 0DCCEFC8 : 0DCD1498 0DCCEFCC : 00000000 0DCCEFD0 : 00000000 0DCCEFD4 : 00000000 END OF EXCEPTION REPORT EXCEPTION! CODE:C0000005 ADDRESS:7C911F6E WORD:<?not found> USER DATA: 0DCD004C THREAD ID: 000005E4 HANDLER: 0DCCEF24 ** Exception time: Mon, 13 Sep 2010 13:06:21 +0400 ** Thread number/reuse/id:1746 0 1508 ** API Calls: pcre_exec sqlite3_finalize STACK: (1094) 00000000 0000000D 00000009 0D040000 0055412A 0DCCEEB4 [0D040101] RETURN STACK: 0DCCEC8C : 0DCD004C 0DCCEC90 : 0DCCFFE0 0DCCEC94 : 0DCD004C 0DCCEC98 : 00000010 0DCCEC9C : 00000000 0DCCECA0 : 00000000 0DCCECA4 : 00000000 0DCCECA8 : 00000008 0DCCECAC : 00000008 0DCCECB0 : 0000000B 0DCCECB4 : 0DCD004C 0DCCECB8 : 0DCCFFD8 0DCCECBC : 0DCD004C [...] 0DCCEEE8 : 8113FC00 0DCCEEEC : FFFFFFFF 0DCCEEF0 : 0DCCFFA4 0DCCEEF4 : 0DCD004C 0DCCEEF8 : 00572A1A ALLOCATE 0DCCEEFC : 00572C6D ALLOCATE 0DCCEF00 : 00000009 0DCCEF04 : 00579475 SALLOT 0DCCEF08 : 005794D4 sALLOT 0DCCEF0C : 0057977F "" 0DCCEF10 : 00579DE6 ((")) 0DCCEF14 : 00553294 (LocalsExit) 0DCCEF18 : 00000004 0DCCEF1C : 00000000 0DCCEF20 : 00555194 CATCH 0DCCEF24 : 0DCCEF7C 0DCCEF28 : 0DCCFFB4 0DCCEF2C : 005680FD EVALUATE-WITH 0DCCEF30 : 00000006 0DCCEF34 : 00000000 0DCCEF38 : 00000000 0DCCEF3C : 0D043AD0 0DCCEF40 : 00000000 0DCCEF44 : FFFFFFFF 0DCCEF48 : 00000000 0DCCEF4C : 00579F65 (") 0DCCEF50 : 00553294 (LocalsExit) 0DCCEF54 : 00000004 0DCCEF58 : 0000007B [...] 0DCCEF98 : 005CF8F4 DavList 0DCCEF9C : 005C1BA2 DoCommand 0DCCEFA0 : 00553294 (LocalsExit) 0DCCEFA4 : 00000004 0DCCEFA8 : 005CF8F4 DavList 0DCCEFAC : 00555194 CATCH 0DCCEFB0 : 0DCCEFF0 0DCCEFB4 : 0DCCFFB8 0DCCEFB8 : 005680FD EVALUATE-WITH 0DCCEFBC : 00000006 0DCCEFC0 : 00000000 0DCCEFC4 : 00000000 0DCCEFC8 : 0DCD1498 0DCCEFCC : 00000000 0DCCEFD0 : 00000000 0DCCEFD4 : 00000000 END OF EXCEPTION REPORT EXCEPTION! CODE:C0000005 ADDRESS:7C911F6E WORD:<?not found> USER DATA: 0DCD004C THREAD ID: 000005E4 HANDLER: 0DCCEFB0 ** Exception time: Mon, 13 Sep 2010 13:06:21 +0400 ** Thread number/reuse/id:1746 0 1508 ** API Calls: pcre_exec sqlite3_finalize STACK: (1067) 00000000 0000000D 00000009 0D040000 0055412A 0DCCEF20 [0D040101] RETURN STACK: 0DCCECF8 : 0DCD004C 0DCCECFC : 0DCCFFD4 0DCCED00 : 0DCD004C 0DCCED04 : 00000000 0DCCED08 : 00000000 0DCCED0C : 00000008 0DCCED10 : 00000000 0DCCED14 : 00000008 0DCCED18 : 00000000 0DCCED1C : 0000022D 0DCCED20 : 0D040188 0DCCED24 : 0D047738 0DCCED28 : 0D0477C0 [...] 0DCCEF74 : 005794D4 sALLOT 0DCCEF78 : 0057977F "" 0DCCEF7C : 0057AA30 S! 0DCCEF80 : 005CE75C SetAction 0DCCEF84 : 005D23A0 EMPTY 0DCCEF88 : 005C19DD ExecCommand 0DCCEF8C : 005C1AD7 DoCommandP 0DCCEF90 : 00553294 (LocalsExit) 0DCCEF94 : 00000004 0DCCEF98 : 005CF8F4 DavList 0DCCEF9C : 005C1BA2 DoCommand 0DCCEFA0 : 00553294 (LocalsExit) 0DCCEFA4 : 00000004 0DCCEFA8 : 005CF8F4 DavList 0DCCEFAC : 00555194 CATCH 0DCCEFB0 : 0DCCEFF0 0DCCEFB4 : 0DCCFFB8 0DCCEFB8 : 005680FD EVALUATE-WITH 0DCCEFBC : 00000006 0DCCEFC0 : 00000000 0DCCEFC4 : 00000000 0DCCEFC8 : 0DCD1498 0DCCEFCC : 00000000 0DCCEFD0 : 00000000 0DCCEFD4 : 00000000 0DCCEFD8 : 005C1BD0 EvalCommand 0DCCEFDC : 005C1D66 EvalCommands1 0DCCEFE0 : 005C1E07 EvalCommands 0DCCEFE4 : 0DCCFFBC 0DCCEFE8 : 005CF924 DavList 0DCCEFEC : 00555194 CATCH 0DCCEFF0 : 00000000 0DCCEFF4 : 0DCCFFBC 0DCCEFF8 : 005CF954 ClassicThread 0DCCEFFC : 005CF9A6 ClassicThread END OF EXCEPTION REPORT EXCEPTION! CODE:C0000005 ADDRESS:7C911F6E WORD:<?not found> USER DATA: 0DCD004C THREAD ID: 000005E4 HANDLER: 0DCCEF78 ** Exception time: Mon, 13 Sep 2010 13:06:21 +0400 ** Thread number/reuse/id:1746 0 1508 ** API Calls: GetTickCount sqlite3_finalize STACK: (1073) 00000000 0000000D 00000009 0D040000 0055412A 0DCCEF08 [0D040101] RETURN STACK: 0DCCECE0 : 0DCD004C 0DCCECE4 : 0DCCFFBC 0DCCECE8 : 0DCD004C 0DCCECEC : 00000008 0DCCECF0 : 00000008 0DCCECF4 : 0000000B 0DCCECF8 : 0DCD004C 0DCCECFC : 0DCCFFD4 0DCCED00 : 0DCD004C 0DCCED04 : 00000000 0DCCED08 : 00000000 0DCCED0C : 00000008 0DCCED10 : 00000000 [...] 0DCCEF3C : 00000000 0DCCEF40 : 001497B6 0DCCEF44 : 0DCCFF80 0DCCEF48 : 0DCD004C 0DCCEF4C : 00572A1A ALLOCATE 0DCCEF50 : 00572C6D ALLOCATE 0DCCEF54 : 00000009 0DCCEF58 : 00579475 SALLOT 0DCCEF5C : 005794D4 sALLOT 0DCCEF60 : 0057977F "" 0DCCEF64 : 00579DE6 ((")) 0DCCEF68 : 00553294 (LocalsExit) 0DCCEF6C : 00000004 0DCCEF70 : 00000000 0DCCEF74 : 00555194 CATCH 0DCCEF78 : 0DCCEFE4 0DCCEF7C : 0DCCFF90 0DCCEF80 : 005680FD EVALUATE-WITH 0DCCEF84 : 00000006 0DCCEF88 : 00000000 0DCCEF8C : 00000000 0DCCEF90 : 0DCD1498 0DCCEF94 : 00000000 0DCCEF98 : 00000000 0DCCEF9C : 00000000 0DCCEFA0 : 00579F65 (") 0DCCEFA4 : 00553294 (LocalsExit) 0DCCEFA8 : 00000004 0DCCEFAC : 0000007B [...] 0DCCEFC0 : 00000000 0DCCEFC4 : 00000000 0DCCEFC8 : 00000000 0DCCEFCC : 007FDBC0 OnDisconnect 0DCCEFD0 : 005BA872 EvalRules 0DCCEFD4 : 005BAE89 EvalRules 0DCCEFD8 : 0000000C 0DCCEFDC : 005C1370 CloseConnection 0DCCEFE0 : 00555194 CATCH 0DCCEFE4 : 00000000 0DCCEFE8 : 0DCCFFB0 0DCCEFEC : 005C138D CloseConnection 0DCCEFF0 : 005C1950 RequestExit 0DCCEFF4 : 005C199E ThreadExit 0DCCEFF8 : 005CF959 ClassicThread 0DCCEFFC : 005CF9A6 ClassicThread END OF EXCEPTION REPORT
wikipost
matveeva13.09.2010 12:16
Интересно. А при повторных F5, CTRL+F5 ничего плохого не пишется. Это если сразу понажимать. А через неск. минут та же F5 опять дает кучу EXCEPTION.
wikipost
ac13.09.2010 14:49
matveeva пишет: цитирование поломалось — Не, у меня в ФФ тоже не работает.

Да, это я поломал цитирование в очередной раз. Уже починил, жмите F5.

PCRE скомпилировал в выходные из текущих исходников pcre.org. http://www.eserv.ru/download/acWEB_2010-09-13_1.rar
У меня с вашими regexp'ами exception не вызывает. Наверное еще от каких-то факторов зависит — исходного url'а, например.
wikipost
ac13.09.2010 17:03
Еще обновление http://www.eserv.ru/download/acWEB_2010-09-13_2.rar (файл pcre.dll из каталога acWEB убрать, он теперь под именем libpcre-0.dll "легализован" в ext).

Теперь ваши правила можно записать в таком виде:
RewriteRule ([a-zA-Z0-9_-]+)/(/) /site.php?alias={s} RewriteRule ([a-zA-Z0-9_-]+)/([a-zA-Z_-]+)(/) /site.php?alias={s}&subalias={s} RewriteRule ([a-zA-Z0-9_-]+)/([0-9]+)(/) /site.php?alias={s}&sid={s} RewriteRule ([a-zA-Z0-9_-]+)/page/([0-9]+)(/) /site.php?alias={s}&page={s}
wikipost
ac13.09.2010 17:04
Каждое правило в одну строку, без переносов.
wikipost
matveeva14.09.2010 10:01
Попробовала. Поставила еще в начале правил
DirectoryIndex: site.php
. Теперь адрес вида "http://delica.local:3130/" отрабатывает правильно, открывается site.php. Адрес "http://delica.local:3130/projects/31/" тоже правильно. А "http://delica.local:3130/about/" показывает
"Наш сайт // about/
Здесь ничего нет (NP)" Ну и прочие адреса вида "http://delica.local:3130/что-то/" тоже попадают на "Здесь ничего нет".
wikipost
ili_a14.09.2010 10:19
ред: 14.09.2010 10:20
matveeva пишет: "Наш сайт // about/
Здесь ничего нет (NP)" Ну и прочие адреса вида "http://delica.local:3130/что-то/" тоже попадают на "Здесь ничего нет".

Это E4Wiki открывается, попробуйте добавить
DirectoryNotfound: site.php
wikipost
ili_a14.09.2010 10:23
ili_a пишет: Это E4Wiki открывается, попробуйте добавить
Правда, тогда и встроенная веб почта становится не доступной.
wikipost
matveeva14.09.2010 10:40
ред: 14.09.2010 10:42
ili_a пишет: Это E4Wiki открывается
Так не должна, вроде, по правилам.
ili_a пишет: DirectoryNotfound: site.php
Можно, конечно, и так, но не совсем правильно на мой взгляд. Понять хочется.
ili_a пишет: встроенная веб почта становится не доступной.
На ней это не скажется, ведь это файлик с правилами действует только для конкретного домена.
wikipost
ili_a14.09.2010 10:51
Чтоб встроенная веб почта заработала, а E4Wiki была недоступна
Uri /~* 0= | DirectoryNotfound: site.php
site.php можно заменить на другой файл с ошибкой 404 Not Found
wikipost
-14.09.2010 10:52 ред. ред.
Что-то я не понимаю, как эти правила друг на друга влияют...
Если в правиле
RewriteRule ([a-zA-Z0-9_-]+)/(/) /site.php?alias={s}
убрать (/), т.е. будет
RewriteRule ([a-zA-Z0-9_-]+)/ /site.php?alias={s}
. Тогда открывается "http://delica.local:3130/что-то/", но зато полностью пропадает разметка (фон, цвет и т.д.). Перестает работать ссылка "http://delica.local:3130/projects/31/", которая должна вроде по другому правилу преобразовываться.
wikipost
ili_a14.09.2010 11:00
matveeva пишет: ili_a пишет: Это E4Wiki открывается
Так не должна, вроде, по правилам.
Из документации: До того как дойти до встроенной wiki, acWEB будет искать файлы в таких каталогах:..
wikipost
matveeva14.09.2010 11:20
ili_a пишет: До того как дойти до встроенной wiki, acWEB будет искать файлы в таких каталогах:..
Так не должна она до нее дойти. должна была строку "http://delica.local:3130/что-то/" превратить в "http://delica.local:3130/site.php?alias=что-то/". Если я правильно понимаю.
Что-то у меня пост один съелся...
Если правило
RewriteRule ([a-zA-Z0-9_-]+)/(/) /site.php?alias={s}
заменить на
RewriteRule ([a-zA-Z0-9_-]+)/ /site.php?alias={s}
, то страница "http://delica.local:3130/что-то/" открывается, но пропадает все форматирование( цвет, фон и т.д.) (на всех страницах). Перестает почему-то работать ссылка "http://delica.local:3130/projects/31/" , хотя она должна была по-другому правилу перенаправиться. В общем, не понимаю.
wikipost
ac14.09.2010 11:38
Может там несколько раз меняется URL, проходя по списку? Можно в конце строк ставить "\EOF". И смотреть по http-логу, как проходит замена (в логе вместо исходного URL будет показана его замена по этим правилам).

А в acWEB.log всё нормально, никаких exception'ов?
wikipost
matveeva14.09.2010 11:58
ред: 14.09.2010 11:59
ac пишет: Может там несколько раз меняется URL, проходя по списку?
Прочитала, что в стандартных .htaccess правила выполняются от первого до последнего, последовательно преобразовывая URL, если только в конце не поставить [L]. Попробовала поставить, ничего не меняется. Я даже оставила только первое правило, остальные выкинула вовсе, но все равно "http://delica.local:3130/что-то/" попадает на "Ничего нет" Как-то странно. Сейчас по журналу посмотрю еще.
matveeva пишет: А в acWEB.log всё нормально, никаких exception'ов?
Никаких! Все чисто. Появились новые записи, раньше не замечала таких.
SD2: 8;1723;0;2;GET;delica.local;/;EXEC_CGI;
и
... RI:1dbeb0145080f2a9d1afcfe7bac26f26 1284174650 ext/libpcre-0.dll Updated 8 items.
wikipost
matveeva14.09.2010 12:13
Вызов "http://delica.local:3130/projects/16/" записывает в журнал:
2010-09-14 13:07:08; 192.168.16.14;2169;0;3;-;200;GET;11147;EXEC_CGI;delica.local;/site.php?alias=projects&sid=16;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;5529;2016;1;2314;;;0;; ...

Вызов "http://delica.local:3130/about/" пишет в журнале след.:
2010-09-14 13:08:00; 192.168.16.14;2227;0;1;-;404;GET;4622;ZNOT_FOUND2P;delica.local;/about/;;text/html; charset=windows-1251;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";anonymous;;33014;140;1;772;;;0;; 2010-09-14 13:08:00; 192.168.16.14;2227;0;2;-;200;GET;5109;ZSendFile;delica.local;/e4a/default.css?t=330820921;apps/e4a/default.css;text/css;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/about/";;;54935;93;1;1476;;;0;; ...

Первое правило вообще никак не отрабатывает...
wikipost
ac14.09.2010 12:56
matveeva пишет: Updated 8 items.

Кстати, да. Обновление вчерашнее скачалось. Вы его установили?
matveeva пишет: SD2: 8

Вот это как раз должно было пропасть после установки обновлений.
wikipost
ac14.09.2010 13:01
matveeva пишет: Первое правило вообще никак не отрабатывает...

Я бы там тоже убрал последний "(/)". А почему "пропадает форматирование" — наверное css'ы по этому или другим правилам тоже в site.php превращаются, надо посмотреть в исходном html-тексте, что там в страницу включается, а по логу — во что превращается. Тогда придумаем, как лишние замены исключить.
wikipost
ac14.09.2010 13:04
И еще можно попробовать вернуть "^" и "&", которые в исходных правилах были. Я их сначала убрал, т.к. они вроде как бессмысленны — в URL'ах нет переводов строк — но это несколько меняет смысл правил, т.к. без этих ограничителей они могут срабатывать на часть строки. Опция multiline в pcre включена, так что должны эти "^" и "&" работать как и в апачах, наверное.
wikipost
matveeva14.09.2010 13:29
ac пишет: Обновление вчерашнее скачалось. Вы его установили?
Нет еще, что-то даже не посмотрела...Сейчас поставлю.
ac пишет: наверное css'ы по этому или другим правилам тоже в site.php превращаются
Именно! Так все и происходит. По журналу видно, что при нормальном отображении идет обращение сначала к site.php? а потом ко всяким css и явам:
2010-09-14 13:37:59; 192.168.16.14;2698;0;5;-;200;GET;6482;EXEC_CGI;delica.local;/;D:\web/delica.local\site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"";;;18843;344;1;3795;;;0;; 2010-09-14 13:37:59; 192.168.16.14;2699;0;4;-;200;GET;2653;SendFile;delica.local;/css/jquery.lightbox-0.5.css;D:\web/delica.local\css\jquery.lightbox-0.5.css;text/css;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;24339;109;1;2993;;;0;; 2010-09-14 13:37:59; 192.168.16.14;2703;0;2;-;200;GET;8819;SendFile;delica.local;/css/style.css;D:\web/delica.local\css\style.css;text/css;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;47160;187;1;1554;;;0;; 2010-09-14 13:37:59; 192.168.16.14;2702;0;4;-;200;GET;55572;SendFile;delica.local;/jsfr/jquery.js;D:\web/delica.local\jsfr\jquery.js;text/javascript; charset=windows-1251;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;323093;172;1;3129;;;0;; ...

А когда без форматирования там так:
2010-09-14 13:35:59; 192.168.16.14;2690;0;1;-;200;GET;6482;EXEC_CGI;delica.local;/;D:\web/delica.local\site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"";;;6482;1000;0;680;;;0;; 2010-09-14 13:35:59; 192.168.16.14;2691;0;1;-;200;GET;2673;EXEC_CGI;delica.local;/site.php?alias=css;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;7128;375;0;684;;;0;; 2010-09-14 13:35:59; 192.168.16.14;2692;0;1;-;200;GET;2673;EXEC_CGI;delica.local;/site.php?alias=css;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;5900;453;0;698;;;0;; 2010-09-14 13:35:59; 192.168.16.14;2693;0;1;-;200;GET;2675;EXEC_CGI;delica.local;/site.php?alias=jsfr;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;5037;531;0;670;;;0;; 2010-09-14 13:35:59; 192.168.16.14;2694;0;1;-;200;GET;2675;EXEC_CGI;delica.local;/site.php?alias=jsfr;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2";"http://delica.local:3130/";;;6588;406;0;666;;;0;;

А в тексте стоят ссылки:
<link rel="stylesheet" type="text/css" href="/css/style.css" /> <link rel="stylesheet" type="text/css" href="/css/jquery.lightbox-0.5.css" media="screen" />
Вот они разрешаются неправильно.
ac пишет: И еще можно попробовать вернуть "^" и "&",
Там "^" и "$" Это начало-конец строки обозначают в .htaccess. Сейчас попробую.
wikipost
ac14.09.2010 13:34
matveeva пишет: Там "^" и "$"

Да-да, я зюки перепутал. Должно быть "$".
wikipost
matveeva14.09.2010 14:00
ac пишет: Да-да, я зюки перепутал. Должно быть "$".

Значит еще раз привожу содержимое файла OnRequest.rules.txt, чтобы не путаться
DirectoryIndex: site.php RewriteRule admincp(/)? /index.php [L] RewriteRule print/object/([0-9]+)(/)? /print/object.php?sid={s} [L] RewriteRule (.*)/data/menu([0-9]+).xml /data/menu{s}.xml [L] RewriteRule ([a-zA-Z0-9_-]+)(/)? /site.php?alias={s} [L] RewriteRule ([a-zA-Z0-9_-]+)/([a-zA-Z_-]+)(/)? /site.php?alias={s}&subalias={s} [L] RewriteRule ([a-zA-Z0-9_-]+)/([0-9]+)(/)? /site.php?alias={s}&sid={s} [L] RewriteRule ([a-zA-Z0-9_-]+)/page/([0-9]+)(/)? /site.php?alias={s}&page={s} [L]

Ну и еще там есть закомментированные строки "\ ".
В этом варианте работает "http://delica.local:3130/", "http://delica.local:3130/about/", форматирование есть. Не работает "http://delica.local:3130/ofprop/1/", т.к. срабатывает первое правило из последней группы. а не третье, как должно было бы.
2010-09-14 14:59:33; 192.168.16.14;3476;0;1;-;200;GET;8926;EXEC_CGI;delica.local;/site.php?alias=ofprop;D:\web/delica.local/site.php;text/html;"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729

Если же написать в первом правиле ограничители:
RewriteRule ^([a-zA-Z0-9_-]+)(/)?$ /site.php?alias={s} [L]
, то начинает работать "http://delica.local:3130/ofprop/1/", но везде слетает формат.
Мозг кипит...
wikipost
matveeva14.09.2010 14:06
Да, если поставить ограничители на всех правилах, то работает только "http://delica.local:3130/" и с форматированием. Все остальные ссылки дают "Здесь ничего нет".
А, вот еще забыла. Может, поможет в расследовании. Еще есть файлик index.php, который я пока переименовала. Если же его восстановить, то вместо "ничего нет", будем попадать на него.
wikipost
matveeva14.09.2010 14:18
matveeva пишет: Не работает "http://delica.local:3130/ofprop/1/", т.к. срабатывает первое правило из последней группы. а не третье, как должно было бы.
Про это, кажется, поняла. В регулярных выражениях ^ обозначает начало, а — $ конец строки. Если их нет, то сравнение работает на наличие подстроки, а не точное совпадение. Поэтому выражение "http://delica.local:3130/ofprop/1/" попадает в первое правило, если там нет ограничителей. Т.к. присутствует комбинация ([a-zA-Z0-9_-]+)(/)? и за ней еще разрешенный хвостик. А если ставить ограничители, то совпадение должно быть точным, и хвост не допускаются. Поэтому первое правило не работает, и срабатывает третье.
wikipost
ac15.09.2010 10:50
matveeva пишет: "/css/style.css"

Вот откройте этот URL в браузере и добейтесь, чтобы он показывал именно style.css, т.е. чтобы на нем RewriteRules не срабатывали.
wikipost
matveeva15.09.2010 12:25
А как передать параметр не по порядку, а конкретный? Вот как тут:
RewriteRule ^(.*)/data/menu([0-9]+).xml$ /data/menu$2.xml [L]
Здесь $2 содержит то, что после "menu" набрано. А для первой группы (.*) — параметр не используется совсем.
А у нас пишется
RewriteRule ([a-zA-Z0-9_-]+)/([0-9]+)(/)? /site.php?alias={s}&sid={s}
подряд. Это мне для экспериментов надо. Как-то строка странно передается в разбор. Напр. ссылка "http://delica.local:3130/projects/31/" работает для варианта
RewriteRule ([a-zA-Z0-9_-]+)/([0-9]+)(/)?$ /site.php?alias={s}&sid={s} [L]
и не работает при начальном ограничителе.
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)(/)?$ /site.php?alias={s}&sid={s} [L]
А это значит, что в разбор идет не "projects/31/", а, например, "/projects/31/" или еще что-то к началу прилипает, что мешает разбору...
wikipost
matveeva15.09.2010 12:31
ac пишет: Вот откройте этот URL в браузере и добейтесь, чтобы он показывал именно style.css,
"http://delica.local:3130/css/style.css/" — показывает текст файла при всех испробованных вариантах....
wikipost
matveeva15.09.2010 12:39
Что-то форум тормозит... весь хвост обсуждения не показывает, говорит
(timeout)

Кстати, если в группу символов добавить слеш, то правило срабатывает:
RewriteRule ^([/a-zA-Z0-9_-]+)/([0-9]+)(/)?$ /site.php?alias={s}&sid={s} [L]
и ссылка "http://delica.local:3130/dd/31/" превращается в "site.php?alias=/dd&sid=31" Так что, видимо, строка передается вместе со слешом. вот.
wikipost
matveeva15.09.2010 13:01
Сделала.
Везде поставила "RewriteRule ^/([a-....." Все работает, форматирование на месте.
Спасибо за помощь.
wikipost
ac15.09.2010 19:47
matveeva пишет: Так что, видимо, строка передается вместе со слешом. вот.

А, ну да, так и есть, все пути в URI в acWEB начинаются с "/". Тут выходит несовместимость с апачевыми регэкспами, но, imho, это всё-таки правильнее.

matveeva пишет: Это мне для экспериментов надо.

Если нужно вставлять пойманные в (...) подстроки не в том порядке, в каком они идут в ловушках, то придётся это более длинно через GetMatch решать. Но это, по-моему, несколько надуманная проблема. Т.к. в php порядок параметров не важен, и лишние параметры тоже не проблема. Т.е. лишний $1 можно загнать в лишнюю (не анализируемую скриптом) переменную, и всё. А ваш пример RewriteRule ^(.*)/data/menu([0-9]+).xml$ /data/menu$2.xml [L] (который этим способом не решить) надо просто другим regexp'ом записывать, без первых скобок (раз всё равно на выброс) — RewriteRule ^.*/data/menu([0-9]+).xml$ /data/menu{s}.xml \EOF.
wikipost
matveeva15.09.2010 22:07
ac пишет: надо просто другим regexp'ом записывать, без первых скобок (раз всё равно на выброс)
Точно! Я просто недотумкала до этого . Но теперь и не надо, т.к. все работает. Может, на будущее пригодится. Спасибо.
wikipost
Работает на Eserv/5.05555 (05.06.2016)