Shifter starts to support sub directory publish, but you still need to do some works with it if you're publishing artifacts into the external server like AWS S3 or Netlify. In this document, we want to introduce and describe our script and how to do it. The webhook for sub directory publishing to the Netlify is available now.
Steps
Step 1. Download an artifact from Shifter dashboard
Step 2. Get the converting script
Copy, paste the script in the script section to your notepad and save it.
Step 3. Run the script for downloaded aritfact
Script
Copy and save as you like.
ARTIFACT_ID=YOUR_ARTIFACT_ID
tar xvzf "${ARTIFACT_ID}".tgz
# Set the name of sub directory, source URL and target URL.
# In the below sample, set sub directory to "blog", published URL (source URL) to "example.on.getshifter.io" and host of the target URL to "example.com"
export SUBDIR=blog
export BASE_NAME=example.on.getshifter.io
export NEW_NAME=example.com
# Rewrite `/`` to `/blog/``
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@<a( [^\/>]*)href="/@<a$1href="/$ENV{SUBDIR}/@gsi' {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e "s@<a( [^\/>]*)href='/@<a $1href='/\$ENV{SUBDIR}/@gsi" {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e "s@'/wp-content@/\$ENV{SUBDIR}/wp-content@gsi" {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e "s@'/wp-includes@'/\$ENV{SUBDIR}/wp-includes@gsi" {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@"/wp-content@"/$ENV{SUBDIR}/wp-content@gsi' {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@"/wp-includes@"/$ENV{SUBDIR}/wp-includes@gsi' {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@\s/wp-content@ /$ENV{SUBDIR}/wp-content@gsi' {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@\s/wp-includes@ /$ENV{SUBDIR}/wp-includes@gsi' {} \;
# update amphtml
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@<link\srel="amphtml"\shref="https://$ENV{BASE_NAME}/@<link rel="amphtml" href="https://$ENV{NEW_NAME}/$ENV{SUBDIR}/@gsi' {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e "s@<link\srel='amphtml'\shref='https://\$ENV{BASE_NAME}/@<link rel='amphtml' href='https://\$ENV{NEW_NAME}/\$ENV{SUBDIR}/@gsi" {} \;
find "${ARTIFACT_ID}/*/amp/" -name 'index.html' -exec perl -pi -e 's@<link\srel="canonical"\shref="https://$ENV{BASE_NAME}/@<link rel="canonical" href="https://$ENV{NEW_NAME}/$ENV{SUBDIR}/@gsi' {} \;
find "${ARTIFACT_ID}/*/amp/" -name 'index.html' -exec perl -pi -e "s@<link\srel='canonical'\shref='https://\$ENV{BASE_NAME}/@<link rel='canonical' href='https://\$ENV{NEW_NAME}/\$ENV{SUBDIR}/@gsi" {} \;
# update meta
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e "s@<meta( [^\/>]*)content='https://\$ENV{BASE_NAME}/@<meta $1content='https://\$ENV{NEW_NAME}/\$ENV{SUBDIR}/@gsi" {} \;
find "${ARTIFACT_ID}" -name 'index.html' -exec perl -pi -e 's@<meta( [^\/>]*)content="https://$ENV{BASE_NAME}/@<meta $1content="https://$ENV{NEW_NAME}/$ENV{SUBDIR}/@gsi' {} \;
# update feed
perl -pi -e 's@<link>https://$ENV{BASE_NAME}@<link>https://$ENV{NEW_NAME}/$ENV{SUBDIR}@gsi' "${ARTIFACT_ID}"/feed/index.html
perl -pi -e 's@<atom:link( [^\/>]*)href="https://$ENV{BASE_NAME}@<atom:link$1href="https://$ENV{NEW_NAME}/$ENV{SUBDIR}@gsi' "${ARTIFACT_ID}"/feed/index.html
Since the version 2, compatible below:
Converting URLs in XML RSS feed
Converting URLs of OGP
Converting URLs for
srcset
inimg
elements
Sample script for sub directory publishing to Netlify