문제점 : 다음은 Windows 환경 (192.168.1.2)과 Apache에서 실행되는 AJP 1.3 커넥터가있는 JBoss 4.2.3 응용 프로그램 서버입니다. 다른 FreeBSD 상자 (192.168.1.10)에서 실행중인 2.2.14. Apache는 모든 요청에 대해 "프런트 게이트"역할을하며 mod_jk를 통해 JBoss에 보냅니다. 모든 SEO 최적화를 수행해야만 정상적으로 작동합니다. 이러한 최적화에는 SEF url이 포함되어 있으므로 JBoss에 보내지기 전에 Apache에서 mod_rewrite를 사용하여 요청을 변경하기로 결정했습니다. 기본적으로,이 규칙을 구현하기 위해 nedd :Apache 2.2 및 JBoss 4.2.3의 mod_rewrite 및 mod_jk 구성
- 는 "http://hostname/directory/"을 "http://hostname/"
- 앞으로의 URL이 최종 사용자가 '아무튼 "http://hostname/wtf/123/"을 "http://hostname/wtf/view.htm?id=123"과 같이 영구적으로 리디렉션과 같은 기존 규칙을 리디렉션 "못생긴"URL (실제 재 작성)을보십시오.
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/www/dummy" ServerName 192.168.1.10 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule /directory/(.*) /$1 [R=permanent,L] RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2 </IfModule> JkMount /* jsp-hostname ErrorLog "/var/log/dummy-host.example.com-error_log" CustomLog "/var/log/dummy-host.example.com-access_log" common </VirtualHost>
문제는 두 번째 재 작성 규칙이 작동하지 않는다는 것입니다 :
여기에 테스트 가상 호스트에 대한 내 아파치 설정입니다. 요청이 JBoss에 그대로 변경되지 않으므로 Tomcat 404 오류가 발생합니다. 그러나 리디렉션 플래그를 두 번째 규칙에 추가하면
RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2 [R,L]
과 같이 작동합니다. 그러나 리디렉션은 내가 여기에 필요한 것이 아닙니다. :) 문제는 요청이 다른 호스트 (192.168.1.2)로 전달된다는 것이지만 실제로 작동하게하는 방법에 대해서는 전혀 모른다. 어떤 도움을 주시면 감사하겠습니다 :)