Левая сторона или шаблон вашего RewriteRule должен быть просто именем файла, которое вы хотите сопоставить, например. ^/AA$
. Если вы также хотите убедиться, что хост и порт соответствуют определенным значениям, вы должны настроить RewriteCond так, чтобы они соответствовали %{HTTP_HOST}
и %{SERVER_PORT}
. Однако последнее может быть ненужным, если только ваш веб-сервер не настроен для нескольких доменов и портов.
Это не проверено, но что-то вроде этого:
RewriteCond %{HTTP_HOST} ^localhost
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/AA$ http://localhost:8090/BB
Я бы порекомендовал вам сначала попробовать это:
RewriteRule ^/AA$ http://localhost:8090/BB
и добавьте RewriteCond, если они вам нужны.
Редактировать на основе комментариев: если вы пытаетесь избежать ответа "302", вы не можете сделать это в описанной вами ситуации. Когда вы используете mod_rewrite для перенаправления с одного хоста на другой, вы получите два ответа, отправленных в ваш браузер. Первый — 302, который указывает браузеру перейти на второй URL-адрес. Второй ответ должен быть 200.
С помощью mod_rewrite вы можете избежать перенаправления посередине, если переписывание происходит с одной страницы на другую на тот же сервер и порт. В этом случае перезапись является внутренней, и веб-сервер может ответить страницей BB, даже если запрос предназначен для AA. Если вы используете другой сервер или порт, веб-сервер для AA не имеет доступа к странице BB, поэтому он отвечает перенаправлением на сервер, у которого есть доступ.
Если вы можете перенастроить свой сайт для использования одного и того же порта для AA и BB, вы сможете заставить его работать. Если нет, я думаю, вы сможете делать то, что хотите, с mod_proxy. Я никогда не использовал mod_proxy, поэтому я не уверен, что вам нужно сделать.
person
bmb
schedule
07.11.2010
80
, а другой прослушивает8090
, либо у вас есть Apache, прослушивающий эти 2 порта с 2 разными виртуальными хостами? - person   schedule 07.11.2010