Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect JBoss AS 7.1服务器级重定向_Redirect_Jboss7.x - Fatal编程技术网

Redirect JBoss AS 7.1服务器级重定向

Redirect JBoss AS 7.1服务器级重定向,redirect,jboss7.x,Redirect,Jboss7.x,我们从http://domain.tld/webapp/...至http://domain.tld/ourWebapp/... 现在我们要将旧URL重定向到新URL—大多数重定向解决方案都在应用程序内部处理。然而,这是行不通的,因为给定了错误的war名称,webapp根本不会被触发 有没有办法在服务器级别添加重定向,而不是从应用程序内部处理重定向?(我们不想部署一个“重定向应用程序”,监听旧的war名称。) 我发现了这个文档:但它似乎过时了,因为它仍然在谈论server.xml(JBossAS7

我们从
http://domain.tld/webapp/...
http://domain.tld/ourWebapp/...

现在我们要将旧URL重定向到新URL—大多数重定向解决方案都在应用程序内部处理。然而,这是行不通的,因为给定了错误的war名称,webapp根本不会被触发

有没有办法在服务器级别添加重定向,而不是从应用程序内部处理重定向?(我们不想部署一个“重定向应用程序”,监听旧的war名称。)

我发现了这个文档:但它似乎过时了,因为它仍然在谈论
server.xml
(JBossAS7.1中没有)。所有提到的元素也不存在,而且似乎不受支持


经过大量测试,我发现这在standalone.xml中是可能的,就在虚拟服务器子系统中。但是,仍然存在一些问题:

到目前为止的工作情况是什么:以下条目将导致预期的远期:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
   <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
      <alias name="localhost"/>
      <rewrite pattern="^/webapp/(.*?)$" substitution="/myWebapp/$1" flags="R=301,L">

      </rewrite>
   </virtual-server>
</subsystem>
所以基本上是一个独立于协议和/或主机名的重定向

我尝试了一个“相对”重定向(
substitution=“/myWebapp/$1”
)-这是可行的,但没有保留端口(请求位于
http://ip:8080/webapp/
被转发到
http://ip/myWebapp/

对此有什么想法吗?

终于找到了:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
   <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
      <alias name="localhost"/>
      <rewrite pattern="^/webapp/(.*?)$" substitution="/myWebapp/$1" flags="R=301,L">

      </rewrite>
   </virtual-server>
</subsystem>


正在按预期工作并保持端口正常。(不知道,为什么第一次尝试时它不起作用,可能没有正确地重新启动服务器,等等。)

如果您可以访问RedHat网站,这里也有一些解释和示例:


JBoss EAP6提供了全局重写阀,可在您配置的“web”子系统中启用,如下所示: 要重定向所有针对localhost:8080/MXBeanDemo的http请求,应将其重定向到“www.yahoo.com/”


用于将localhost:8080/Abcd重定向到localhost:8080/Wxyz

    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
            <rewrite pattern="^/Abcd(.*)" substitution="/Wxyz" flags="R"/>   <!-- NOTICE -->
        </virtual-server>
    </subsystem>

    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
            <rewrite pattern="^/MXBeanDemo(.*)" substitution="http://www.yahoo.com" flags="R"/>   <!-- NOTICE -->
        </virtual-server>
    </subsystem>
    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
            <rewrite pattern="^/Abcd(.*)" substitution="/Wxyz" flags="R"/>   <!-- NOTICE -->
        </virtual-server>
    </subsystem>