Converting artifact into subdirectory and publishing it to the external server

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.



Step 1. Download an artifact from Shifter dashboard

See: How to download an artifact

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

Step 4. Publish converted artifact to external server like AWS S3 or Netlify.



Copy and save as you like.

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 "" and host of the target URL to ""

export SUBDIR=blog

# 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@<linksrel="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@<linksrel='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@<linksrel="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@<linksrel='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   in img  elements 


Sample script for sub directory publishing to Netlify

Take the Next Step

Get started on your website today with Shifter. Try out our free plan and take the first step towards building the perfect website for you and your visitors.

Copyright © 2023 DigitalCube

A product by

Check out our other products