diff --git a/sphinx_rtd_theme/layout.html b/sphinx_rtd_theme/layout.html
index 94a40cc1c..2ff04bcec 100644
--- a/sphinx_rtd_theme/layout.html
+++ b/sphinx_rtd_theme/layout.html
@@ -51,12 +51,31 @@
{#- CANONICAL URL (deprecated) #}
{%- if theme_canonical_url and not pageurl %}
-
+
{%- endif -%}
- {#- CANONICAL URL #}
- {%- if pageurl %}
-
+ {#-
+ CANONICAL URL
+ NB! pageurl is currently a non-documented template context variable!
+ pageurl implementation:
+ https://www.sphinx-doc.org/en/master/_modules/sphinx/builders/html.html
+ https://github.com/readthedocs/readthedocs.org/blob/4b2eb75bebfce04390ac3f84d1c57ef7f7126fe8/readthedocs/doc_builder/templates/doc_builder/conf.py.tmpl#L151-L156
+ -#}
+ {%- if pageurl -%}
+ {#-
+ pageurl implementation wrongly: adds .html for the dirhtml builder's pageurl
+ Workaround for: https://github.com/sphinx-doc/sphinx/issues/9730
+ Once a fix is released in Sphinx, put an upper bound on the Sphinx version for the workaround
+ -#}
+ {%- if builder == 'dirhtml' and pageurl.endswith('index.html') %}
+ {#- This expression trims away index.html entirely #}
+
+ {%- elif builder == 'dirhtml' and pageurl.endswith('.html') %}
+ {#- This expression trims away .html and adds a / #}
+
+ {%- else %}
+
+ {%- endif -%}
{%- endif -%}
{#- JAVASCRIPTS #}