From 0e304b1b7fd1dd3aaf1427a0d5adb75922b364b7 Mon Sep 17 00:00:00 2001 From: David Hewitt <1939362+davidhewitt@users.noreply.github.com> Date: Wed, 21 Jun 2023 21:35:06 +0100 Subject: [PATCH] add http headers to help search engines index the docs --- .netlify/build.sh | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/.netlify/build.sh b/.netlify/build.sh index dc341d5a..10ec241c 100755 --- a/.netlify/build.sh +++ b/.netlify/build.sh @@ -17,21 +17,45 @@ mv pyo3-gh-pages netlify_build ## Configure netlify _redirects file # Add redirect for each documented version +set +x # these loops get very spammy and fill the deploy log + for d in netlify_build/v*; do version="${d/netlify_build\/v/}" echo "/v$version/doc/* https://docs.rs/pyo3/$version/:splat" >> netlify_build/_redirects + if [ $version != $PYO3_VERSION ]; then + # for old versions, mark the files in the latest version as the canonical URL + for file in $(find $d -type f); do + file_path="${file/$d\//}" + # remove index.html and/or .html suffix to match the page URL on the + # final netlfiy site + url_path="$file_path" + if [[ $file_path == index.html ]]; then + url_path="" + elif [[ $file_path == *.html ]]; then + url_path="${file_path%.html}" + fi + echo "/v$version/$url_path" >> netlify_build/_headers + if test -f "netlify_build/v$PYO3_VERSION/$file_path"; then + echo " Link: ; rel=\"canonical\"" >> netlify_build/_headers + else + # this file doesn't exist in the latest guide, don't index it + echo " X-Robots-Tag: noindex" >> netlify_build/_headers + fi + done + fi done # Add latest redirect -echo "/latest/* /v${PYO3_VERSION}/:splat" >> netlify_build/_redirects +echo "/latest/* /v${PYO3_VERSION}/:splat 302" >> netlify_build/_redirects ## Add landing page redirect if [ "${CONTEXT}" == "deploy-preview" ]; then echo "/ /main/" >> netlify_build/_redirects else - echo "/ /v${PYO3_VERSION}/" >> netlify_build/_redirects + echo "/ /v${PYO3_VERSION}/ 302" >> netlify_build/_redirects fi +set -x ## Generate towncrier release notes pip install towncrier