这是我第一次接触 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 完全陌生,但我花了将近两天时间尝试不同的东西并在网上搜索。
任何建议都非常受欢迎。