2013-12-12 36 views
0

我有一個AJP代理設置的問題。AJP Proxy settigs with mod_rewrite

版本SW
的Oracle Linux服務器6.5,阿帕奇2.2.15,Apache Tomcat上7.0.29,Tomcat的連接器-1.2.37-SRC的。

預期的行爲
With slash at the end of URL
http:/@/name.company.local/application/ --> http:/@/name.company.local:8080/application/
It works => OK

Without slash at the end of URL
http:/@/name.company.local/application -> http:/@/name.company.local:8080/application
It does NOT work => K.O.

With path after app name
http:/@/name.company.local/some/path -> http:/@/name.company.local:8080/application/some/path
It does NOT work => K.O.

Apache日誌文件(無功/日誌/的httpd/name.company.local-error_log中)

 
[Fri Dec 13 10:48:33 2013] [error] [client 10.0.100.26] File does not exist: /var/www/name.company.local/application 
[Fri Dec 13 10:48:33 2013] [error] [client 10.0.100.26] File does not exist: /var/www/name.company.local/application 

AJP代理設置(在/ etc /httpd/conf.d/ajp.conf)

ProxyRequests Off
<Proxy *>
  Order deny,allow
  Deny from all
  Allow from localhost
</Proxy>
ProxyPass /application ajp://localhost:8009/application
ProxyPassReverse /application ajp://localhost:8009/application

的Apache設置(在/ etc/httpd的/ conf目錄/ httpd的)

NameVirtualHost *:80
NameVirtualHost *:443
ServerName name.company.local

<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /var/www/name.company.local
   ServerName name.company.local
   ServerAlias application

   RewriteEngine On
   RewriteLog "/var/log/httpd/rewrite.log"
   RewriteLogLevel 9
   RewriteCond %{HTTP_HOST} !.local$
   RewriteRule ^/(.*)$ http:/@/name.company.local/$1 [R=301]
   RewriteCond %{REQUEST_URI} !^/application/
   RewriteRule ^/(.*)$ /application/$1
   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{User-Agent}i\"" appspecial
   ErrorLog logs/name.company.local-error_log
   CustomLog logs/name.company.local-access_log appspecial
</VirtualHost>

你能告訴我,什麼是錯的?或者我該如何調試它?

至於

Nautil

附: 由於堆棧溢出(我是一個新手)的名譽低,我不能使用超過2個鏈接,因此我必須用http:/ @ /替換有效的HTTP協議前綴。

回答

0

我已經重寫規則的變化在URL問題的最終解決無斜線:
RewriteCond %{REQUEST_URI} !^/application
RewriteRule ^/(.*)$ /application/$1

我也解決了隨着路徑後,應用程序的名稱問題,再次重寫規則的修改: RewriteCond %{REQUEST_URI} !^/application
RewriteRule ^/(.*)$ http://name.company.local/application/ $1