На самом деле существует число способы хранить информацию сессии (предполагающий использование ASP.NET). В памяти одна опция, которой действительно необходимо остерегаться. Я полагаю, что можно изменить его через web.config приложения. Можно использовать другие вещи как cookie или SQL Server для хранения информации состояния. Вот статья MSDN, которая говорит о состоянии сеанса ASP.NET. Вот другая статья, которая обсуждает выбор места хранения.
Попробуйте это:
RewriteEngine On
RewriteLog "/data/wre/var/logs/modrewrite.log"
RewriteLogLevel 5
RewriteCond %{REMOTE_ADDR} ^192\.168\.10\..* [OR]
RewriteCond %{REMOTE_ADDR} ^72\.139\.201\..* [OR]
RewriteCond %{REMOTE_ADDR} ^129\.233\.4\..* [OR]
RewriteCond %{REMOTE_ADDR} ^208\.118\.97\.32
RewriteRule ^/solutions https://example.com/account/signin?go=outside [NE,NC,R=301]
Отметьте, несколькими директивами RewriteCond является неявно AND'd, необходимо указать, должны ли они быть OR'd вместо этого. Если Вы хотите, чтобы браузер помнил перенаправление, указывая, что постоянное перенаправление могло бы сохранить некоторую будущую обработку.
В зависимости от Вашей конфигурации могло бы быть легче указать Известные Хорошие диапазоны и перенаправление для всех остальных. Из переписать руководства по перенаправлению иностранцев: Руководство Apache
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$
RewriteRule ^/solutions https://example.com/account/signin?go=outside [NE,NC,R=301]
Prix, я на самом деле следую за этим.
http://www.the-art-of-web.com/system/rewrite/
Conversely, you may want to allow only certain IP addresses to access the site:
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{REMOTE_ADDR} !^87\.65\.43\.21$
RewriteCond %{REQUEST_URI} !^sorry\.html
RewriteRule .* /sorry.html
Translation:
IF their IP address is not 12.34.56.78
AND their IP address is not 87.65.43.21
AND the request is not for sorry.html
THEN display the sorry.html page
Это 2 должно быть установлено любой в VirtualHost
или Directory
удаться:
RewriteLog "/data/wre/var/logs/modrewrite.log"
RewriteLogLevel 5
Вы могли попробовать то, что Вы хотите как это:
RewriteCond %{REMOTE_ADDR} ^192\.168\.10\. [OR]
RewriteCond %{REMOTE_ADDR} ^72\.139\.201\. [OR]
RewriteCond %{REMOTE_ADDR} ^129\.233\.4\. [OR]
RewriteCond %{REMOTE_ADDR} ^208\.118\.97\.32$
который перевел бы в:
Возможно, я неправильно понимаю то, что Вы желаете сделать, но если я действительно понимаю то, что Вы пытаетесь сделать, похоже, что Вы делаете невероятно сложным способом.
Если это для целого сайта или всего каталога, почему не только используют позволить директиву в каталоге virtualhost строки файла конфигурации, как соответствующую?
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow
И набор 403 ошибочных страницы, чтобы быть sorry.html http://httpd.apache.org/docs/2.2/mod/core.html#errordocument
Так что-то как:
<directory "/path/to/content/" >
Order Allow,Deny
Allow 192.168.0.0/255.255.0.0 # allow everyone from the 192.168.0.0/255.255.0.0 network
# every one else gets denied (default for stuff that has not matched is to the
# last clause of the Order directive
# the error document for a 403 (forbidden) is the sorry.html page
ErrorDocument 403 /sorry.html
</directory>
Похоже, вы создаете завесу (стена входа в систему, стена платных услуг, завеса обслуживания и т. Д.), К которой могут добраться все, кроме нескольких диапазонов IP-адресов в Интернете.
Это вот что я сделал для создания такой конфигурации:
# This implements a maintenance curtain; only these three IPs
# can look behind the curtain. Note its useful to allow the box
# itself too.
#
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !127.0.0.1
RewriteCond %{REMOTE_ADDR} !123.234.45.6
RewriteCond %{REMOTE_ADDR} !123.234.45.78
RewriteCond %{REQUEST_URI} !^/maintenance-curtain/.*
RewriteRule / / [L,R=503]
ErrorDocument 503 /maintenance-curtain/index.html
ProxyPass /maintenance-curtain !
Alias /maintenance-curtain /var/www/maintenance-curtain
И она действительно очень похожа на вашу. Я предлагаю вам сначала упростить и протестировать только один IP. Если остальное, если ваша конфигурация довольно сложна, это может мешать, поэтому попробуйте доказать это в меньшем контексте или переместите его на более ранний этап конфигурации. Мешают ли виртуальные хосты; вам нужно реплицировать конфигурацию (используйте Include
, если вам нужно это сделать).
Я скажу, однако, что я (я думаю) известные такие вещи, как REMOTE_ADDR, не должны быть установлены в случай, когда какой-то другой модуль не включен ... прошло некоторое время с тех пор, как я обнаружил такое поведение ... включен ли cgi_module?