A highly configurable URL-rewriting tool for Java EE 6+ and Servlet 2.5+ applications, supporting integration with:
- CDI
- Spring DI
- JodaTime configuration
- Tuckey.org URLRewriteFilter configuration
- JavaServer Faces (JSF)
- JavaServer Pages (JSP)
- Struts
- Wicket
- Grails
- Spring Roo
- Spring Web Flow
- Any servlet & web framework!
- All major servlet containers and application servers
- Support forum: https://ocpsoft.org/support/forum/rewrite-users/
- Documentation: https://ocpsoft.org/rewrite/docs/
-
It is recommended but not required to remove other URL-rewriting tools from your application before using Rewrite. If you choose to leave them in place, weird things may happen, be warned.
-
Include OCPSoft Rewrite in your application's POM file:
<dependency> <groupId>org.ocpsoft.rewrite</groupId> <artifactId>rewrite-servlet</artifactId> <version>${rewrite.version}</version> </dependency> Version Reference Table: ------------------------------------- Jakarta EE 10 | Rewrite 10.x Jakarta EE 9 | Rewrite 9.x Jakarta EE 8 | Rewrite 8.x Java EE <= 7 | Rewrite 3.x
-
Add a configuration provider implementing the 'org.ocpsoft.rewrite.config.ConfigurationProvider' interface, or extending from the abstract HttpConfigurationProvider class for convenience:
package com.example; @RewriteConfiguration public class ExampleConfigurationProvider extends HttpConfigurationProvider { @Override public int priority() { return 10; } @Override public Configuration getConfiguration(final ServletContext context) { return ConfigurationBuilder.begin() .addRule() .when(Direction.isInbound().and(Path.matches("/some/page/{p}/"))) .perform(Forward.to("/new-page/{p}.html")); } }
-
You must either annotate your
ConfigurationProvider
class with the @RewriteConfiguration annotation, OR create a file named: '/META-INF/services/org.ocpsoft.rewrite.config.ConfigurationProvider' which contains the fully qualified name of yourConfigurationProvider
implementation:/META-INF/services/org.ocpsoft.rewrite.config.ConfigurationProvider --- com.example.ExampleConfigurationProvider
Note that your annotated class won't be found, by default, if your ConfigurationProvider is in a jar inside a war. You can either set the servlet parameter org.ocpsoft.rewrite.annotation.SCAN_LIB_DIRECTORY
to true
, or use the ServiceLoader approach instead.
-
Add rules to your configuration. Condition objects such as 'Direction.isInbound()' and 'Path.matches(...)' can be found in the 'org.ocpsoft.rewrite.config.' and 'org.ocpsoft.rewrite.servlet.config.' packages.
-
Consider using Rewrite extensions for extra power:
- JodaTime Integration
- Tuckey URLRewriteFilter Integration
- CDI Integration
- And more... read the Documentation
-
Run your application!
mvn package -PWILDFLY_MANAGED_8
(Or use any of the other profiles in pom.xml - Note, most seem to be failing right now due to stale maven packages. Pull requests fixing test proviles are appreciated!)
See https://github.com/ocpsoft/rewrite/wiki/Releasing#current-process
This project is looking for your feedback! What would make your task easier? How can we simplify this experience?
-
Continue simplification of Configuration objects and convenience APIs.
-
Implement additional xml & file-based configuration support.
-
Implement https://localhost:8080/rewrite-status monitoring tool