Назад | Перейти на главную страницу

RewriteCond не соответствует моему IP при сопоставлении на% {REMOTE_ADDR}

Я хочу, чтобы правило mod_rewrite не выполнялось, когда трафик попадает на веб-сервер из внутренней сети. Веб-сервер - это apache 2.2. Следующий RewriteCond предназначен для защиты правила перезаписи.

        RewriteCond %{REMOTE_ADDR} !=192\.168\.[0-15]\.[1-255]

Если я получаю доступ к веб-серверу с использованием ip 192.168.15.173, правило, похоже, не срабатывает, и, таким образом, правило перезаписи выполняется, несмотря на мой внутренний адрес. Где моя ошибка?

Соответствие простому:

    RewriteCond %{REMOTE_ADDR} !=192\.168\.15\.173

тоже терпит неудачу.

Я использовал пример «Блокировка роботов» в http://httpd.apache.org/docs/trunk/rewrite/access.html построить правило. Я что-то упускаю?

Изменить: я уже пытался исследовать использование перезаписи журнала, но это не принесло никакой полезной информации. Вот что происходит при запросе:

    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) init rewrite engine with requested uri /test/
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (3) applying pattern '^/test/(.*)' to uri '/test/'
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) rewrite '/test/' -> 'https://example2.com/'
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) explicitly forcing redirect with https://example2.com/
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (1) escaping https://example2.com/ for redirect
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (1) redirect to https://example2.com/ [REDIRECT/302]

Я даже не вижу RewriteCondition, упомянутого в этом журнале.

Edit2: Подробная версия apache:

Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 26.el6.centos
Size        : 2.9 M
Repo        : installed
From repo   : anaconda-CentOS-201303020151.x86_64

Edit3: я увеличил LogLevel до 4, и теперь я получаю больше результатов:

192.168.15.173 - - [12/Jun/2013:14:18:05 +0200] [example.com/sid#7f3c6afdfdb0][rid#7f3c6f880568/initial] (4) RewriteCond: input='192.168.15.173' pattern='!=192\.168\.15\.173' => matched

Почему это совпадает?

Edit4: http://regexr.com?356tm говорит мне, что не должно совпадать ...

Я нашел ответ на свой вопрос. Правильным состоянием должно было быть:

RewriteCond %{REMOTE_ADDR} !192\.168\.[0-9]+\.[0-9]+