2016-03-08 43 views
1

我有一個名爲「app1」和「app2」的兩個應用程序的tomcat。 我已經用tomcat配置了以下v.host配置的Apache Web服務器。Apache重寫條件進入無限循環

ServerName mywebapp.com 
ServerAlias mywebapp.com 

ProxyRequests On 
ProxyVia On 

<Proxy *> 
AddDefaultCharset Off 
Order deny,allow 
Allow from all 
</Proxy> 

RewriteEngine On 
Options +FollowSymLinks 

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mywebapp.com$ 
RewriteRule ^(.*)$ http://mywebapp.com/app1$1 [R=301,L] 

ProxyPass/ajp://localhost:8009/ 
ProxyPassReverse/ajp://localhost:8009/ 

我可以訪問我的web應用都具有以下的URL。

  • mywebapp.com/app1
  • mywebapp.com/app2

我需要一個默認的重定向規則的地方,如果用戶點擊「mywebapp.com」重定向到「mywebapp。 com/app1

我試過下面的一個,但沒有運氣。它走向無限循環。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mywebapp.com$ 
RewriteRule ^(.*)$ http://mywebapp.com/app1$1 [R=301,L] 

任何人都可以告訴我我需要做的改變嗎?

+0

爲什麼你將自己的域名重定向到自己? – starkeen

+0

B'Coz我需要我的「app1」作爲mywebapp.com上默認的web應用程序。這就是爲什麼我將mywebapp.com重定向到mywebapp.com/app1。 – aston

回答

1

您可以使用此規則:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mywebapp.com$ 
RewriteRule ^/?((?!app1).*)$ http://mywebapp.com/app1/$1 [NC,L,R] 
+0

@startkeen:添加這些行後。我登陸到Apache默認頁面。 – aston

1

試試這個:

RewriteEngine on 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} = mywebapp.com 
RewriteRule .* /app1 [R=302] 

301重定向是永久性的。除非你希望它永久不要使用它。 重定向302是臨時的,它是默認值。

+0

您正在使用%{REQUEST_URI}變量與Http_host進行匹配。 – starkeen