Commit f64e8696 authored by Mohamed Hernouf's avatar Mohamed Hernouf
Browse files

Merge branch 'master' of gitlab.ocamlpro.com:OCamlPro/www

parents a5112952 1f71b7f9
......@@ -9,7 +9,7 @@ We have years of experience on the research and development of programming langu
<br />
<div class="row">
<div class="col-4">
<div class="card bg-transparent" >
<div class="card bg-transparent border-0" >
<img src="assets/img/home_industry.png" />
<div class="card-body">
<h5 class="card-title">For industrial partners who face challenges</h5>
......@@ -18,7 +18,7 @@ We have years of experience on the research and development of programming langu
</div>
</div>
<div class="col-4">
<div class="card bg-transparent" >
<div class="card bg-transparent border-0" >
<img src="assets/img/home_research.png" />
<div class="card-body">
<h5 class="card-title">For R&amp;D labs who need collaboration</h5>
......@@ -27,7 +27,7 @@ We have years of experience on the research and development of programming langu
</div>
</div>
<div class="col-4">
<div class="card bg-transparent" >
<div class="card bg-transparent border-0" >
<img src="assets/img/home_dev.png" />
<div class="card-body">
<h5 class="card-title">For developers to reach mastery</h5>
......
......@@ -208,6 +208,11 @@ let () =
let something = Dream.param "something" request in
let url = Format.sprintf "%s/" something in
redirect_loader "" url request)
(* REDIRECTS TAGS PAGES WITH TRAILING / *)
; Dream.get "/tag/:something/" (fun request ->
let something = Dream.param "something" request in
let url = Format.sprintf "tag/%s/" something in
redirect_loader "" url request)
(* REDIRECTS FR STATIC PAGES WITH TRAILING / *)
; Dream.get "/fr/:something/" (fun request ->
let something = Dream.param "something" request in
......@@ -250,7 +255,7 @@ let () =
let article = Dream.param "article" request in
let url = Format.sprintf "fr/%s/%s/%s/%s/" year month day article in
redirect_loader "" url request)
(* REDIRECTS ALL URLS WITH NO TAILING / *)
(* REDIRECTS ALL URLS WITH NO TRAILING / *)
; Dream.get "/**" (Dream.static ~loader:redirect_loader "")
]
@@ Dream.not_found
......@@ -104,7 +104,151 @@ let old_to_new =
; ("/fr/category/ocaml-fr/", "/blog/category/ocaml")
]
(*TAGS*)
@ []
@ [
("/tag/3-12/", "/blog/")
; ("/tag/4-01", "/blog/")
; ("/tag/4-01-en/", "/blog/")
; ("/tag/4-02/", "/blog/")
; ("/tag/4-02-en/", "/blog/")
; ("/tag/4-08-1/", "/blog/")
; ("/tag/4-10-en/", "/blog/")
; ("/tag/4-10/", "/blog/")
; ("/tag/alt-ergo/", "/blog/tag/altergo")
; ("/tag/alt-ergo-en/", "/blog/tag/altergo")
; ("/tag/alt-ergo-spider-web-en/", "/blog/tag/altergo")
; ("/tag/alt-ergo-spider-web/", "/blog/tag/altergo")
; ("/tag/backward-compatibility/", "/blog/tag/backwardcompatibility")
; ("/tag/backward-compatibility-en/", "/blog/tag/backwardcompatibility")
; ("/tag/blockchain/", "/blog/tag/blockchains")
; ("/tag/blockchains/", "/blog/tag/blockchains")
; ("/tag/blog/", "/blog/tag/ocamlpro")
; ("/tag/build-manager/", "/blog/")
; ("/tag/build-manager-en/", "/blog/")
; ("/tag/bware-en/", "/blog/")
; ("/tag/bytes/", "/blog/")
; ("/tag/bytes-en/", "/blog/")
; ("/tag/cheat-sheets/", "/blog/tag/cheatsheets")
; ("/tag/cheat-sheets-en/", "/blog/tag/cheatsheets")
; ("/tag/compiler/", "/blog/tag/compiler")
; ("/tag/compiler-en/", "/blog/tag/compiler")
; ("/tag/compiler-optimization-en/", "/blog/tag/optimization")
; ("/tag/compiler-optimization/", "/blog/tag/optimisation")
; ("/tag/cumulus/", "/blog/tag/cumulus")
; ("/tag/cumulus-en/", "/blog/tag/cumulus")
; ("/tag/devleopment-tools/", "/blog/tag/developmenttools")
; ("/tag/devleopment-tools-en/", "/blog/tag/developmenttools")
; ("/tag/dune-network/", "/blog/tag/blockchains")
; ("/tag/editor-en/", "/blog/tag/developmenttools")
; ("/tag/flambda2/", "/blog/tag/flambda2")
; ("/tag/flambda2-en/", "/blog/tag/flambda2")
; ("/tag/formal-methods/", "/blog/category/formal_methods")
; ("/tag/functor-en/", "/blog/tag/ocaml")
; ("/tag/gc/", "/blog/tag/gc")
; ("/tag/gc-en/", "/blog/tag/gc")
; ("/tag/generic-syntax-extension-en/", "/blog/tag/generic")
; ("/tag/generic-syntax-extension/", "/blog/tag/generic")
; ("/tag/hacking-sessions/", "/blog/tag/hackingsessions")
; ("/tag/hacking-sessions-en/", "/blog/tag/hackingsessions")
; ("/tag/highlights/", "/blog/tag/highlights")
; ("/tag/highlights-en/", "/blog/tag/highlights")
; ("/tag/indentation-en/", "/blog/tag/indentation")
; ("/tag/inlining-en/", "/blog/tag/inlining")
; ("/tag/intel-backend/", "/blog/tag/intel")
; ("/tag/intel-backend-en/", "/blog/tag/intel")
; ("/tag/javascript/", "/blog/tag/javascript")
; ("/tag/javascript-en/", "/blog/tag/javascript")
; ("/tag/jfla/", "/blog/tag/jfla")
; ("/tag/js_of_ocaml/", "/blog/tag/javascript")
; ("/tag/js_of_ocaml-en/", "/blog/tag/javascript")
; ("/tag/liquidity/", "/blog/tag/liquidity")
; ("/tag/liquidity-fr/", "/blog/tag/liquidity")
; ("/tag/love/", "/blog/tag/love")
; ("/tag/memory/", "/blog/tag/memory")
; ("/tag/memory-en/", "/blog/tag/memory")
; ("/tag/memprof/", "/blog/tag/memprof")
; ("/tag/memprof-en/", "/blog/tag/memprof")
; ("/tag/multi-runtime/", "/blog/tag/ocaml")
; ("/tag/multi-runtime-en/", "/blog/tag/ocaml")
; ("/tag/namespaces-en/", "/blog/tag/namespaces")
; ("/tag/ocaml/", "/blog/tag/ocaml")
; ("/tag/ocaml-en/", "/blog/tag/ocaml")
; ("/tag/ocaml-memory-profiler/", "/blog/tag/profiler")
; ("/tag/ocamlpro/", "/blog/category/ocamlpro")
; ("/tag/ocamlpro-en/", "/blog/category/ocamlpro")
; ("/tag/ocamlres/", "/blog/tag/ocaml")
; ("/tag/ocamlres-en/", "/blog/tag/ocaml")
; ("/tag/ocamltop/", "/blog/tag/ocamltop")
; ("/tag/ocamltop-en/", "/blog/tag/ocamltop")
; ("/tag/ocp-cmicomp/", "/blog/category/ocaml")
; ("/tag/ocp-cmicomp-en/", "/blog/category/ocaml")
; ("/tag/ocp-indent-en/", "/blog/tag/ocpindent")
; ("/tag/ocp-index/", "/blog/tag/ocpindent")
; ("/tag/ocp-index-en/", "/blog/tag/ocpindent")
; ("/tag/ocp-manager/", "/blog/tag/ocpmanager")
; ("/tag/ocp-manager-en/", "/blog/tag/ocpmanager")
; ("/tag/ocp-memprof/", "/blog/tag/memprof")
; ("/tag/ocp-memprof-en/", "/blog/tag/memprof")
; ("/tag/ocp-pack/", "/blog/tag/ocaml")
; ("/tag/ocp-pack-en/", "/blog/tag/ocaml")
; ("/tag/ocsigen/", "/blog/tag/ocsigen")
; ("/tag/ocsigen-en/", "/blog/tag/ocsigen")
; ("/tag/opam/", "/blog/tag/opam")
; ("/tag/opam-en/", "/blog/tag/opam")
; ("/tag/opam-build/", "/blog/tag/opam")
; ("/tag/opam-build-en/", "/blog/tag/opam")
; ("/tag/opam-weather-services/", "/blog/tag/weather")
; ("/tag/opam-weather-services-en/", "/blog/tag/weather")
; ("/tag/optimization/", "/blog/tag/optimization")
; ("/tag/optimization-en/", "/blog/tag/optimization")
; ("/tag/packing/", "/blog/tag/tooling")
; ("/tag/packing-en/", "/blog/tag/tooling")
; ("/tag/plot/", "/blog/tag/tezos")
; ("/tag/plot-en/", "/blog/tag/tezos")
; ("/tag/private-en/", "/blog/tag/private")
; ("/tag/profiler/", "/blog/tag/profiler")
; ("/tag/profiler-en/", "/blog/tag/profiler")
; ("/tag/profiling/", "/blog/tag/profiling")
; ("/tag/profiling-en/", "/blog/tag/profiling")
; ("/tag/release/", "/blog/tag/release")
; ("/tag/release-en/", "/blog/tag/release")
; ("/tag/rust/", "/blog/tag/rust")
; ("/tag/safe-string/", "/blog/tag/tooling")
; ("/tag/safe-string-en/", "/blog/tag/tooling")
; ("/tag/scanf/", "/blog/tag/scanf")
; ("/tag/scanf-en/", "/blog/tag/scanf")
; ("/tag/scilab/", "/blog/tag/tooling")
; ("/tag/scilab-en/", "/blog/tag/tooling")
; ("/tag/smart-contract/", "/blog/tag/smartcontracts")
; ("/tag/smart-contracts/", "/blog/tag/smartcontracts")
; ("/tag/solidity/", "/blog/tag/solidity")
; ("/tag/solver-en/", "/blog/category/formal_methods")
; ("/tag/source-code/", "/blog/tag/sourcecode")
; ("/tag/source-code-en/", "/blog/tag/sourcecode")
; ("/tag/spark/", "/blog/tag/altergo")
; ("/tag/spark-en/", "/blog/tag/altergo")
; ("/tag/string-en/", "/blog/tag/string")
; ("/tag/tezos-en/", "/blog/tag/tezos")
; ("/tag/tools/", "/blog/tag/tooling")
; ("/tag/tools-en/", "/blog/tag/tooling")
; ("/tag/try-altergo/", "/blog/tag/altergo")
; ("/tag/try-altergo-en/", "/blog/tag/altergo")
; ("/tag/try-ocaml/", "/blog/tag/tryocaml")
; ("/tag/try-ocaml-en/", "/blog/tag/tryocaml")
; ("/tag/tryocaml/", "/blog/tag/tryocaml")
; ("/tag/tzscan/", "/blog/tag/tzscan")
; ("/tag/windows-en/", "/blog/tag/windows")
; ("/tag/wxocaml/", "/blog/tag/wxocaml")
; ("/tag/wxocaml-en/", "/blog/tag/wxocaml")
; ("/tag/4-10-fr/", "/blog/tag/bestfit")
; ("/tag/gc-fr/", "/blog/tag/fr")
; ("/tag/ocaml-fr/", "/blog/tag/fr")
; ("/tag/alt-ergo-fr/", "/blog/tag/fr")
; ("/tag/smart-contracts-fr/", "/blog/tag/fr")
; ("/tag/tezos-fr/", "/blog/tag/fr")
; ("/tag/stat-memprof/", "/blog/tag/memprof")
; ("/tag/memory-profiler/", "/blog/tag/memprof")
; ("/tag/", "/blog/")
]
(* BLOG *)
@ [ ( "/blog/", "/blog")
; ( "/fr/blog-fr/", "/blog")
......@@ -382,3 +526,7 @@ let redirection_hash =
| Some _new_url -> Blog.error (Format.sprintf "%s has a duplicate redirection." oldu)
) old_to_new;
tbl
let find_tag _given_tag =
Format.printf "YOOOOO@.";
raise Blog.ContentDoesntExistSoPleaseRaiseA404
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment