0

这是我第一次接触 Wildfly/JBoss 和 JAVA web 技术。我想提前写这个以避免混淆并表明我是新手:)

我正在尝试为托管在 WildFly 16 服务器上的网站设置重写规则。我有一台安装了 Apache 并将其配置为反向代理的 Linux 机器。在同一台机器上是一个运行 Wildfly 的 docker。我可以访问 WAR 文件,并尝试在那里进行所有修改(我无权访问项目文件)

网站的一部分是使用 react 构建的,它需要这 3 次重写:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html [L]

我已经用 PHP(在 htaccess 文件中)检查了 Apache 上的这些规则,它们运行良好。

我的问题是我无法让 RewriteRules 在 Wildfly 上工作。

根据文档(https://docs.jboss.org/jbossweb/7.0.x/rewrite.html),我需要添加:

<valve>
   <class-name>"org.jboss.web.rewrite.RewriteValve"</class-name>
</valve>

jboss-web.xml. 我这样做了,但是在 WAR 中很聪明,所以现在该WEB-INF\jboss-web.xml文件具有以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="8.0" xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/schema/jbossas/jboss-web_8_0.xsd">
    <valve>
        <class-name>"org.jboss.web.rewrite.RewriteValve"</class-name>
    </valve>
    <context-root>/TestYourSkills</context-root>
</jboss-web>

然后(也根据文档)我rewrite.properties在 WEB-INF 文件夹中添加了具有以下内容的文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/$ /index.html [L]

但我无法让它发挥作用。我尝试添加更简单的规则,但我所有的尝试都失败了。

难道我做错了什么?也许我需要启用其他东西或添加额外的 JAR 文件WEB-INF\lib?我对 WildFly 完全陌生,但我花了将近两天时间尝试不同的东西并在网上搜索。

任何建议都非常受欢迎。

4

0 回答 0