Как скрыть название действия от URL в Struts2 - PullRequest
0 голосов
/ 25 марта 2011

Как видно из заголовка, проблема в следующем:

RewriteCond %{SERVLET_PATH} ^/(.+) 
RewriteRule ^/(.+)  /home.action [L] 

-> тогда, если я введу domain.com/blahblah, home.action будет выполнено

Однако, если:

RewriteCond %{SERVLET_PATH} ^/
RewriteRule ^/  /home.action [L] 

-> затем я ввожу domain.com -> home.action, которая никогда не будет выполнена!

Я использовал index.jsp (и объявил также в web.xml) и добавил:

response.sendRedirect("home.action");

НЕ РАБОТАЕТ

Затем добавьте:

<META HTTP-EQUIV="Refresh" CONTENT="1;URL=home.action">

НЕ РАБОТАЕТ

В результате я был бы признателенчтобы услышать ваши решения для того, чтобы выполнить действие, введите только URL домена без какого-либо пути.Например: domain.com

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Похоже, вы используете корневой контекст.Поэтому можно ли с уверенностью сказать, что вы обычно получаете доступ к своему действию, перейдя на http://www.domain.com/home.action?

Если это так, то вы можете настроить HomeAction как действие по умолчанию в вашем struts.xml.

Пример

<action name="home" class="...">
    ...
</action>

<default-action-ref name="home"/>

Затем, если вы запросите только http://www.example.com/, он должен вызвать ваше домашнее действие.

0 голосов
/ 04 апреля 2011

Решено ;

Не пишите условие, только только это ->

RewriteRule ^/index$  /home.action [L] 

И ваш index.jsp должен быть:

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-9" />
    <meta name="verify-v1" content="tonewfwefwewfwefwefrz4tqvroPwefewfy3izuwefwefKs=" />  
    <meta http-equiv="refresh" content="0;url=" /> 
</head>
<body>  
  <%
  response.setStatus(301); 
  response.setHeader( "Location", "/" );
  response.setHeader( "Connection", "close" );  
  %>    
</body>
...