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; }