diff options
author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2017-06-12 22:30:06 +0200 |
---|---|---|
committer | Reinier Zwitserloot <reinier@zwitserloot.com> | 2017-06-13 00:15:32 +0200 |
commit | 1772fa9d86e66ab815186c125062ca74e5b35849 (patch) | |
tree | 395c36005e3636f24455502b906015d6fb90564c | |
parent | 3cf73930c3ba0c6da415ec487692e7f0cb5cfb3d (diff) | |
download | lombok-1772fa9d86e66ab815186c125062ca74e5b35849.tar.gz lombok-1772fa9d86e66ab815186c125062ca74e5b35849.tar.bz2 lombok-1772fa9d86e66ab815186c125062ca74e5b35849.zip |
htaccess dynamically generated to canonicalize all web requests.
-rw-r--r-- | buildScripts/website.ant.xml | 1 | ||||
-rw-r--r-- | src/website/lombok/website/WebsiteMaker.java | 37 | ||||
-rw-r--r-- | website/extra/htaccess | 43 |
3 files changed, 68 insertions, 13 deletions
diff --git a/buildScripts/website.ant.xml b/buildScripts/website.ant.xml index ff37b726..4f1b8dde 100644 --- a/buildScripts/website.ant.xml +++ b/buildScripts/website.ant.xml @@ -76,7 +76,6 @@ such as applying the templates to produce the website, converting the changelog <include name="LICENSE" /> </fileset> </copy> - <copy file="website/extra/htaccess" tofile="build/website/.htaccess" /> <java classname="lombok.website.WebsiteMaker" failonerror="true"> <classpath> <path refid="build.path" /> diff --git a/src/website/lombok/website/WebsiteMaker.java b/src/website/lombok/website/WebsiteMaker.java index 4b1c0b01..10e460dd 100644 --- a/src/website/lombok/website/WebsiteMaker.java +++ b/src/website/lombok/website/WebsiteMaker.java @@ -220,11 +220,24 @@ public class WebsiteMaker { convertDownloadEdge(freemarkerConfig, out); } + public void buildHtAccess(File out) throws Exception { + Configuration freemarkerConfig = new Configuration(Configuration.VERSION_2_3_25); + freemarkerConfig.setEncoding(Locale.ENGLISH, "UTF-8"); + freemarkerConfig.setOutputEncoding("UTF-8"); + freemarkerConfig.setOutputFormat(HTMLOutputFormat.INSTANCE); + freemarkerConfig.setTemplateLoader(createLoader("extra")); + freemarkerConfig.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + + outputDir.mkdirs(); + convertHtAccess(freemarkerConfig, out); + } + public void buildWebsite() throws Exception { Configuration freemarkerConfig = makeFreemarkerConfig(); outputDir.mkdirs(); convertTemplates(freemarkerConfig); + buildHtAccess(new File(outputDir, ".htaccess")); } private TemplateLoader createLoader() throws IOException { @@ -235,6 +248,30 @@ public class WebsiteMaker { return new FileTemplateLoader(new File(baseDir, base)); } + private void convertHtAccess(Configuration freemarker, File outFile) throws Exception { + Map<String, Object> dataModel = new HashMap<String, Object>(); + dataModel.put("setupPages", listHtmlNames(new File(outputDir, "setup"))); + dataModel.put("featurePages", listHtmlNames(new File(outputDir, "features"))); + dataModel.put("experimentalPages", listHtmlNames(new File(outputDir, "features/experimental"))); + Template template = freemarker.getTemplate("htaccess"); + FileOutputStream fileOut = new FileOutputStream(outFile); + try { + Writer wr = new BufferedWriter(new OutputStreamWriter(fileOut, "UTF-8")); + template.process(dataModel, wr); + wr.close(); + } finally { + fileOut.close(); + } + } + + private List<String> listHtmlNames(File dir) { + List<String> out = new ArrayList<String>(); + for (String s : dir.list()) { + if (s.endsWith(".html") && !s.equals("index.html")) out.add(s.substring(0, s.length() - 5)); + } + return out; + } + private void convertChangelog(Configuration freemarker, File outFile) throws Exception { Map<String, Object> dataModel = createBasicDataModel(); diff --git a/website/extra/htaccess b/website/extra/htaccess index fd34633f..815095b9 100644 --- a/website/extra/htaccess +++ b/website/extra/htaccess @@ -1,17 +1,36 @@ RewriteEngine On -RewriteRule ^features/all$ /features/index.html [L,END] -RewriteRule ^features/index(\.html)?$ /features/index.html [L,END] -RewriteRule ^features/experimental/all$ /features/experimental/index.html [L,END] -RewriteRule ^features/experimental/index(\.html)?$ /features/experimental/index.html [L,END] -RewriteRule ^features/.*\.html$ - [L,END] -RewriteRule ^features/(.*)$ /features/$1.html [L,END] -RewriteRule ^features$ /features/index.html [L,END] -RewriteRule ^features/experimental$ /features/experimental/index.html [L,END] -RewriteRule ^changelog$ /changelog.html [L,END] + RewriteRule ^$ /main.html [L,END] -RewriteRule ^index(\.html)?$ /main.html [L,END] +RewriteRule ^(index|home)(\.html)?$ / [NC,RC=301] + +RewriteRule ^changelog$ /changelog.html [L,END] +RewriteRule ^changelog(\.html)?$ /changelog [NC,R=301] RewriteRule ^credits$ /credits.html [L,END] +RewriteRule ^credits(\.html)?$ /credits [NC,R=301] RewriteRule ^download$ /download.html [L,END] +RewriteRule ^download(\.html)?$ /download [NC,R=301] RewriteRule ^all-versions$ /all-versions.html [L,END] -RewriteRule ^setup/.*\.html$ - [L,END] -RewriteRule ^setup/(.*) /setup/$1.html [L,END] +RewriteRule ^all-versions(\.html)?$ /all-versions [NC,R=301] + +<#list setupPages as pg> +RewriteRule ^setup/${pg?no_esc}$ /setup/${pg?no_esc}.html [L,END] +RewriteRule ^setup/${pg?no_esc}(\.html)?$ /setup/${pg?no_esc} [NC,R=301] +</#list> + +RewriteRule ^features/all$ /features/index.html [L,END] +RewriteRule ^features(/all)?$ /features/all [NC,R=301] +RewriteRule ^features/index(\.html)?$ /features/all [NC,R=301] + +<#list featurePages as pg> +RewriteRule ^features/${pg?no_esc}$ /features/${pg?no_esc}.html [L,END] +RewriteRule ^features/${pg?no_esc}(\.html)?$ /features/${pg?no_esc} [NC,R=301] +</#list> + +RewriteRule ^features/experimental/all$ /features/experimental/index.html [L,END] +RewriteRule ^features/experimental(/all)?$ /features/experimental/all [NC,R=301] +RewriteRule ^features/experimental/index(\.html)?$ /features/experimental/all [NC,R=301] + +<#list experimentalPages as pg> +RewriteRule ^features/experimental/${pg?no_esc}$ /features/experimental/${pg?no_esc}.html [L,END] +RewriteRule ^features/experimental/${pg?no_esc}(\.html)?$ /features/experimental/${pg?no_esc} [NC,R=301] +</#list> |