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

Jboss + mod_rewrite =?

У меня 2 сервера, Apache и Jboss. При использовании JKmount .war файлы монтируются и представляют собой сложный сайт.

например:

JkMount /directory/* ajp13
Alias /directory /jboss/server/default/deploy/directory.war
<Directory  /jboss/server/default/deploy/directory.war>
  Order allow,deny
  allow from all
  Options -Indexes
</Directory>
<Directory  /jboss/server/default/deploy/directory.war/WEB-INF>
  deny from all
</Directory>

Я хотел бы использовать mod_rewrite на стороне Apache, чтобы изменить URL-адреса, возвращаемые mod_jk.

например:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.1.1$
RewriteRule /.* http://server.example/redirect.html [R=301,L]

В настоящее время приведенный выше код влияет только на изображения, возвращаемые Apache, но не на страницы, возвращаемые mod_jk.

Это возможно? Как это делается?

Аналогичный вопрос задан на Переполнение стека однако, имея выбор, если это возможно, я хотел бы обрабатывать это внутреннее для Apache, а не изменять конфигурацию Jboss.

Сервер - OpenSuse 11.1, и я подозреваю, что могут быть некоторые проблемы с порядком приоритета модулей, однако я не смог это подтвердить.

Примеры URL-адресов:

http://site.example/directory/index.jsp
http://site.example/foo/other.html

В этом примере первый URL-адрес монтируется в mod_jk с использованием директив, перечисленных в конфигурации выше, и НЕ будет перезаписан mod_rewrite. Второй URL-адрес - это обычный каталог на сайте Apache, он правильно переписан.

Спасибо всем

После долгих поисков я нашел ответ на этот вопрос.

Директива rewrite должна быть размещена глобально для (виртуального) хоста, а не в или в .htaccess. Кажется, что Apache на самом деле не анализирует эти файлы, поскольку файлы, обслуживаемые из mod_jk, не являются частью этой структуры; что имеет смысл, если задуматься. Однако он будет применять правила mod_rewrite, которые применяются ко всему хосту.

извините, не могу комментировать, я новичок здесь ... вы можете привести пример URL, который возвращается из mod_jk. Похоже, регулярное выражение не подходит для возвращаемой страницы.

Попробуй все перенаправить на http: //server.example/redirect.html:

RewriteRule .* http://server.example/redirect.html [R=301,L]

Если это работает, вас беспокоит регулярное выражение.

Позвольте мне немного объяснить.

у вас есть URI, который выглядит так: http://foo.bar.com/anything

Ваше регулярное выражение (/.*) теперь ищет косую черту, за которой следует что-то. Но в Uri нет «ничего».

Если у вас есть изображение: например,

http://foo.bar.com/images/image.png чем есть / in images / image.png, и регулярное выражение соответствует и выполняет перенаправление.

Если вы хотите перенаправить какой-либо сайт на другой Сервер:

http://foo.bar.com/somesite -> http://bar.foo.com использовать

RewriteRule somesite.* http://server.example/redirect.html [R=301,L]

Извините, не могу комментировать, но в ответ на ваш ответ Antitribu вы также можете поместить операторы перезаписи в <Location> контекст. Есть хороший раздел руководства по apache, в котором описывается, когда использовать <File>, <Location>, .htaccess и т. д..