aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@zwitserloot.com>2017-06-12 22:30:06 +0200
committerReinier Zwitserloot <reinier@zwitserloot.com>2017-06-13 00:15:32 +0200
commit1772fa9d86e66ab815186c125062ca74e5b35849 (patch)
tree395c36005e3636f24455502b906015d6fb90564c
parent3cf73930c3ba0c6da415ec487692e7f0cb5cfb3d (diff)
downloadlombok-1772fa9d86e66ab815186c125062ca74e5b35849.tar.gz
lombok-1772fa9d86e66ab815186c125062ca74e5b35849.tar.bz2
lombok-1772fa9d86e66ab815186c125062ca74e5b35849.zip
htaccess dynamically generated to canonicalize all web requests.
-rw-r--r--buildScripts/website.ant.xml1
-rw-r--r--src/website/lombok/website/WebsiteMaker.java37
-rw-r--r--website/extra/htaccess43
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>