Apache HTTP переписать / перенаправить на основе IP - PullRequest
3 голосов
/ 17 мая 2011

Я хочу перенаправить ip на другой вид моего сайта, например, я хочу, чтобы посетитель с ip x увиделwww.xxx.com?_DEBUG=1в то время как все остальные посетители видят обычный www.xxx.com, как мне это сделать в конфигурационном файле apache, какие директивы используются?

1 Ответ

3 голосов
/ 17 мая 2011

Вот пример конфигурации перезаписи для того, что вы хотите - поместите это в виртуальный хост для www.xxx.com на вашем сервере:

RewriteCond %{REMOTE_ADDR} 1.2.3.4
RewriteCond %{QUERY_STRING} !_DEBUG=1
#RewriteRule ^/(.*)$ /$1?_DEBUG=1 [QSA,R,L]
RewriteRule ^/(.*)$ /$1?_DEBUG=1 [QSA,L]

Пара заметок:

  • Измените 1.2.3.4 на любой IP-адрес, который вам нужен
  • Второй RewriteCond предотвращает повторную запись уже переписанных URL-адресов, включающих _DEBUG=1
  • Существуют две версии фактического RewriteRule; первая версия (закомментированная) фактически выполняет перенаправление. Используйте это, если вы действительно хотите, чтобы HTTP-клиент отправлял на сервер второй запрос, включая аргумент _DEBUG=1. Недостатком является то, что если вы объединяете данные GET и POST, этот метод не будет работать.
  • Вторая версия RewriteRule - это то, что я рекомендую вам использовать ... она не выполняет перенаправление. Вместо этого он просто добавляет параметр _DEBUG=1 к HTTP-запросу внутри Apache перед обработкой запроса.
...