diff --git a/pom.xml b/pom.xml
index 01017d3..34a87f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,6 +38,7 @@
2.5
4.3.1
1.7.5
+ 9.0.7.v20131107
@@ -85,6 +86,11 @@
slf4j-api
${slf4j.version}
+
+ org.eclipse.jetty
+ jetty-server
+ ${jetty.version}
+
diff --git a/prerender-java.iml b/prerender-java.iml
index f74aa01..5f16884 100644
--- a/prerender-java.iml
+++ b/prerender-java.iml
@@ -22,5 +22,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/github/greengerong/PreRenderSEOFilter.java b/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
index 6eb721f..993e74b 100644
--- a/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
+++ b/src/main/java/com/github/greengerong/PreRenderSEOFilter.java
@@ -14,7 +14,7 @@
public class PreRenderSEOFilter implements Filter {
public static final List PARAMETER_NAMES = Lists.newArrayList("preRenderEventHandler", "proxy", "proxyPort",
"prerenderToken", "forwardedURLHeader", "crawlerUserAgents", "extensionsToIgnore", "whitelist",
- "blacklist", "prerenderServiceUrl");
+ "blacklist", "prerenderServiceUrl","serverName");
private PrerenderSeoService prerenderSeoService;
@Override
diff --git a/src/main/java/com/github/greengerong/PrerenderConfig.java b/src/main/java/com/github/greengerong/PrerenderConfig.java
index 90c2240..eed6ab7 100644
--- a/src/main/java/com/github/greengerong/PrerenderConfig.java
+++ b/src/main/java/com/github/greengerong/PrerenderConfig.java
@@ -21,6 +21,7 @@
public class PrerenderConfig {
private final static Logger log = LoggerFactory.getLogger(PrerenderConfig.class);
public static final String PRERENDER_IO_SERVICE_URL = "http://service.prerender.io/";
+ public static final String SERVER_NAME = "http://movmix.com";
private Map config;
public PrerenderConfig(Map config) {
@@ -131,4 +132,9 @@ private String getDefaultPrerenderIoServiceUrl() {
final String prerenderServiceUrlInEnv = System.getProperty("PRERENDER_SERVICE_URL");
return isNotBlank(prerenderServiceUrlInEnv) ? prerenderServiceUrlInEnv : PRERENDER_IO_SERVICE_URL;
}
+
+ public String getServerName() {
+ final String serverName = config.get("serverName");
+ return isNotBlank(serverName) ? serverName : SERVER_NAME;
+ }
}
diff --git a/src/main/java/com/github/greengerong/PrerenderSeoService.java b/src/main/java/com/github/greengerong/PrerenderSeoService.java
index 250b075..ae9e28d 100644
--- a/src/main/java/com/github/greengerong/PrerenderSeoService.java
+++ b/src/main/java/com/github/greengerong/PrerenderSeoService.java
@@ -11,6 +11,7 @@
import org.apache.http.message.BasicHeader;
import org.apache.http.message.HeaderGroup;
import org.apache.http.util.EntityUtils;
+import org.eclipse.jetty.server.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -185,6 +186,20 @@ private String getRequestURL(HttpServletRequest request) {
return url;
}
}
+ //workaround for jetty and rewrite since all url are rewrite to index.html
+ //and we need the original url.
+ if (request instanceof org.eclipse.jetty.server.Request){
+ StringBuilder result = new StringBuilder();
+ String server = prerenderConfig.getServerName();
+ int port = request.getServerPort();
+ if(port != 80 && port != 443){
+ result.append(String.format("%s:%s", server, port));
+ }else {
+ result.append(server);
+ }
+ result.append(((Request)request).getUri());
+ return result.toString();
+ }
return request.getRequestURL().toString();
}
@@ -363,6 +378,9 @@ private void withPrerenderToken(HttpRequest proxyRequest) {
private String getFullUrl(HttpServletRequest request) {
final String url = getRequestURL(request);
+ if(url.contains("?")) {
+ return url;
+ }
final String queryString = request.getQueryString();
return isNotBlank(queryString) ? String.format("%s?%s", url, queryString) : url;
}