Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » не приходит почта на 1 ящик

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
имеем типа такой htaccess  

Код:
 
AuthUserFile .htpasswd
AuthName "Access"
AuthType Basic
<limit GET>
require user batva
</limit>
 

 
задача воздействовать не на всю папку, а только на некоторые урлы.
Например при наборе test.cgi?id=4 запрашиваем сетевой пароль, а при наборе test.cgi?id=6 либо любом другом пароль не просим и пускаем всех.
 
 
есть такая штука как SetEnvIf  
 
Она устанавливает переменную, если выполнено условие.
 
Вот так запрещаем доступ всем, а разрешаем только мозилам.
 

Код:
 
SetEnvIf User-Agent ^Mozilla VARIABLE
<Directory />
    Order Deny,Allow
    Deny from all
    Allow from env=VARIABLE
</Directory>
 

вместо User-Agent вверху я могу юзать REQUEST_URI и проверяя урл выставлять переменную.
Но как мне потом проверить эту переменную?
Как мне выполнять этот блок, только когда переменная установлена в истину?
Другими словами мне нужно что то в этом духе
 

Код:
 
IF VARIABLE THEN
 
AuthUserFile .htpasswd
AuthName "Access"
AuthType Basic
<limit GET>
require user batva
</limit>
 
END IF  
 

 
Добавлено
кстати, вот такой вариант не пашет.
 

Код:
 
SetEnvIf Request_URI "\.cgi$" TEST=ok
<IfDefine TEST>
 
AuthUserFile .htpasswd
AuthName "Access"
AuthType Basic
<limit GET>
require user batva
</limit>
</IfDefine>
 

 
Тут переменная окружения TEST устанавливается, ее потом видно,
 

Код:
 
#!/usr/bin/perl
use CGI qw(:header);
print header();
while (($key, $value)=each(%ENV)){
print"$key => $value<br>";
}
 

 но вот <IfDefine TEST> не работает.

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 07:38 31-05-2002 | Исправлено: lynx, 07:24 31-08-2003
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva
<Location ...>
 
 
Добавлено
нет, тоже не работает... а странно.  
бум думать.
 
Добавлено

Код:
 
<Directory />  
    Order Allow,Deny
    Allow from all
    Deny from env=VARIABLE
    AuthUserFile .htpasswd  
    AuthName "Access"  
    AuthType Basic  
    <limit GET>  
      require user batva  
    </limit>  
    Satisfy any
</Directory>  
 

 
такое должно работать - если ты установишь VARIABLE.
У меня не получилось через SetEnvIf установить.. :idontknow:

----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 10:46 31-05-2002
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
L0Ve

Код:
 
error.log
 
[Fri May 31 11:30:40 2002] [alert] [client 127.0.0.1] e:/localhost/test/.htaccess: <Directory not allowed here
 

 
Добавлено
а соб-но говоря почему?
 
Добавлено
L0Ve
а вот так пашет.
 

Код:
 
SetEnvIf Request_URI "\.cgi$" TEST=ok  
#<Directory />  
    Order Allow,Deny  
    Allow from all  
    Deny from env=TEST  
    AuthUserFile .htpasswd  
    AuthName "Access"  
    AuthType Basic  
    <limit GET>  
      require user batva  
    </limit>  
    Satisfy any  
#</Directory>  
 

 
Добавлено
минуту
 
Добавлено
блин, не получается установить переменную.
допустим урл имеет вид index.cgi?id=8
 
если писать так SetEnvIf Request_URI "index" TEST=ok  
то все устанавливается, но это не то что нужно, а если писать так  
 
SetEnvIf Request_URI "id=8$" TEST=ok  
 
либо другие подобные варианты не катит.
 
Тоесть все что идет после ? тобишь параметры, они не работают при проверке почему то отсекаются, хотя в браузер выводится Request_URI полный, вместе с параметрами.
 
Any idea?

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 11:37 31-05-2002
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva

Цитата:
Any idea?

Of course...
Идеи всегда есть...
 
 
Код:
 
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  id=4$
    RewriteRule ^(.*)  /$1 [E=test:1]
 

 
шото типа... токо проверку надо еще.. шоб не залупилось...

----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 12:01 31-05-2002
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
L0Ve
твой метод пашет на ура, но теперь проблема с эти SetEnvIf  
я даже так написал и у меня установилась переменная.
SetEnvIf Request_URI "\.cgi$" TEST=ok  
 
отсюда следует что хвост обрубается при проверке, хотя скрипту Request_URI передается полный.
 
Во как, век живи век учись.

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 12:02 31-05-2002
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
L0Ve
а вообще  оно и так не лупится... но и не работает...
мда...
 
Добавлено
Дальнейшие исследования показали, что RewriteRule ^(.*)  /$1 [E=test:1] устанавливает REDIRECT_TEST = 1, а не TEST=1...
но почему-то замена Deny from env=TEST  на Deny from env=REDIRECT_TEST  ни к чему не приводит...  
 
 
Добавлено
batva
брр..... а почему в RewriteEngine REQUEST_URI только до "?"...
с каких это пор...
и почему SetEnvIf не хочет работать с QUERY_STRING...
 
 
 
Добавлено
batva
Вот. Родил... Через ж.. конечно но работает.

Код:
 
    RewriteEngine On
    RewriteCond %{QUERY_STRING}  id=4$
    RewriteCond %{REQUEST_URI} !^env2
    RewriteRule ^env(.*)  /batva/env2$1
 
    <Files env2.cgi>
    AuthUserFile .htpasswd
    AuthName "Access"
    AuthType Basic
    <limit GET>
      require user batva
    </limit>
    </Files>
 
 

где, env2.cgi - hard link на env.cgi

----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 12:09 31-05-2002
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
L0Ve

Цитата:
брр..... а почему в RewriteEngine REQUEST_URI только до "?"...  
с каких это пор...  

 
я про SetEnvIf говорил.
 
 
 

Цитата:
и почему SetEnvIf не хочет работать с QUERY_STRING...  

не работает, почему не могу знать, просто дурдом какой то.
 

Цитата:
Вот. Родил... Через ж.. конечно но работает.  

 
у меня что-то не пашет.
 

Код:
 
error.log
 
[Fri May 31 13:40:15 2002] [error] [client 127.0.0.1] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: e:/localhost/test/env.cgi
 
 

 
Добавлено
L0Ve
А что в RewriteRule тоже хвост не учитывается? Без RewriteCond отловить хвост в RewriteRule не получается.
 
Вообщем вот как у меня заработало.
 

Код:
 
RewriteEngine on
RewriteLog logs/rewrite.log
RewriteLogLevel 9
RewriteCond %{QUERY_STRING}  id=4$
RewriteRule ^(.*)/env\.cgi$  $1/env.cgi [E=TEST2:YES]
 

 

Код:
 
    Order Allow,Deny  
    Allow from all  
    Deny from env=TEST2  
    AuthUserFile .htpasswd  
    AuthName "Access"  
    AuthType Basic  
    <limit GET>  
    require user batva
    </limit>  
    Satisfy any  
 

 
Добавлено
причем первый кусок кода (там где mod_rewrite) я вставил httpd.conf почему оно не пашет из под .htaccess я не знаю, пишет  
 

Код:
 
в error.log
 
 
[Fri May 31 14:15:13 2002] [error] [client 127.0.0.1] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: e:/localhost/test/env.cgi
 
 
 

 
 
Добавлено
L0Ve

Цитата:
Дальнейшие исследования показали, что RewriteRule ^(.*)  /$1 [E=test:1] устанавливает REDIRECT_TEST = 1, а не TEST=1...  

 
А у меня это корректно работает, именно устанавливается TEST=1
 
дурдом.
 
Короче то что я выше написал у меня пашет, теперь нужно сделать чтобы оно все пахало из под .htaccess без правки httpd.conf

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 13:47 31-05-2002
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batva
L0Ve
 
Сори, что вмешиваюсь, такие профи разговаривают. Один комментарий.
 
Директива

Цитата:
<Directory />  
     

 
не может быть использована в файле .htaccess, что соб-но Апач и говорит в error.log.
.htaccess _кладется_ в директорию, для которой определяет конфигурацию. Поэтому использование в нем <директори> и не логично.
 
Хотя, это вы уже и сами поняли.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 17:56 31-05-2002
new yorik



Lame®
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva

Цитата:
Description:
Enclose a group of directives that apply only to the named file-system directory and sub-directories
 
Syntax:
<Directory directory-path> ... </Directory>
 
Context:
server config, virtual host
 
Status:
Core
 
Module:
core

оть.. в акесах не выйдет
 
 
Добавлено
пргнал я
batva
а мод реврайту поидее пофигу где пахать:

Цитата:
This module operates on the full URLs (including the path-info part) both in per-server context (httpd.conf) and per-directory context (.htaccess) and can even generate query-string parts on result.

Всего записей: 2623 | Зарегистр. 31-12-2001 | Отправлено: 18:14 31-05-2002
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
batva

Цитата:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden:

Где-то в мануале было написано по этому поводу...
Что если Выключено FollowSymLinks и стоит AllowOverride None. то в RewriteEngine работать будет не всё. Сделано так из соображений безопасности... Я не понял к чему это... И не помню где именно видел. Найду - покажу.
 
Добавлено
Нашел:

Цитата:
 
Note: To enable the rewriting engine for per-directory configuration files you need to set ``RewriteEngine On'' in these files and ``Options FollowSymLinks'' must be enabled. If your administrator has disabled override of FollowSymLinks for a user's directory, then you cannot use the rewriting engine. This restriction is needed for security reasons.
 

источник: http://localhost/manual/mod/mod_rewrite.html

----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 19:51 31-05-2002
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Рабочее решение.
 
Нам надо авторизация при входе в форум 999, урл которого:
 
http://**/forums.cgi?forum=999
 
 
1. Создаем жесткую ссылку на файл:
 
ln forums.cgi forum_stop.cgi
 
2.  
 
<VirtualHost ...>
....
 
RewriteEngine on
RewriteLog /var/log/где_там/rewrite.log
RewriteLogLevel 9
RewriteCond %{THE_REQUEST}  forum=999    
RewriteRule ^(.*)/forums\.cgi  $1/forum_stop.cgi
##^^Если в запросе forum=999 то переписывать его как forum_stop  
 
##Ниже авторизация для forum_stop.cgi
 
<Files forum_stop.cgi>    
AuthType Basic
AuthName "Access"
AuthUserFile /var/pswd/access
Require user access
</Files>
 
 
Пашеть
 
 
(с) L0Ve
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 05:20 28-08-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулась с траблой, над которой билась сильно долго. Спасибо Чери.
 
Задача.
Все линки с furum=8 преобразовывать в forum_networks
 
То есть все такие линки:
 
forum.ru-board.com/forums.cgi?forum=8
forum.ru-board.com/topic.cgi?forum=8&topic=0451#1
forum.ru-board.com/postings.cgi?action=edit&forum=8&topic=0451&postno=11
forum.ru-board.com/misc.cgi?action=printtopic&forum=8&topic=0451
 
Напрашивается решение:
 

Код:
 
RewriteLog /var/log/www/wwwaspirantura/rewrite.log
RewriteLogLevel 2
RewriteCond %{THE_REQUEST} forum=8
RewriteRule ^(.*)/forums\.cgi  $1/forum_networks.cgi  
RewriteRule ^(.*)/topic\.cgi $1/topic_networks.cgi
RewriteRule ^(.*)/postings\.cgi $1/postings_networks.cgi
RewriteRule ^(.*)/printpage\.cgi $1/printpage_networks.cgi
 

 
Но это решение не пашет! Оно пашет криво, то есть преобразовывает нормально только первую строчку после RewriteCond.
 
В общем, после бессонной ночи, было рождено такое РАБОТАЮЩЕЕ решение:
 

Код:
 
RewriteEngine on
RewriteLog /var/log/www/rewrite.log
RewriteLogLevel 2
 
RewriteCond %{THE_REQUEST} forum=8
RewriteRule ^(.*)/forums\.cgi  $1/forum_networks.cgi  
 
RewriteCond %{THE_REQUEST} forum=8
RewriteRule ^(.*)/topic\.cgi $1/topic_networks.cgi
 
RewriteCond %{THE_REQUEST} forum=8
RewriteRule ^(.*)/postings\.cgi $1/postings_networks.cgi
 
RewriteCond %{THE_REQUEST} forum=8
RewriteRule ^(.*)/printpage\.cgi $1/printpage_networks.cgi
 

 
То есть каждому правилу предшествует свое условие.
Дурдом, конечно, но по иному не пашет.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 07:22 31-08-2003
conrad111

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть 2 сервера с убунтой
на серваке 1 стоит lamp сборка. днс и почту не ставил
на ип сервака смотрел домен site.com, письма отсылались нормально на все адреса, в том числе на адреса домена site.com
почтового ящика нету на серваке и не было точно. и на старом серваке я ничего не ставил кроме апач+пхп+мускл  
 
на серваке 2 стоит панель веста,которая установила кучу софта.может и почтовый сервер, и днс . я добавил туда домен site.com, днс и почта по умолчанию,их не настраивал. с сервака 2 все отсылаемые письма приходят на все ящики, кроме ящиков домена site.com
 
как исправить?

Всего записей: 30 | Зарегистр. 22-09-2007 | Отправлено: 08:30 23-03-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » не приходит почта на 1 ящик


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru