From 31152a60d1dfdd5efcecb5cdca75c51c0d1b7f1a Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sat, 24 Jul 2021 01:57:55 +0100 Subject: [PATCH] Refactor Nginx configuration --- .../nginx/root/etc/nginx/conf.d/default.conf | 1236 +++++++++-------- 1 file changed, 620 insertions(+), 616 deletions(-) diff --git a/tools/docker/images/nginx/root/etc/nginx/conf.d/default.conf b/tools/docker/images/nginx/root/etc/nginx/conf.d/default.conf index 3bdb7e1c..8727412f 100644 --- a/tools/docker/images/nginx/root/etc/nginx/conf.d/default.conf +++ b/tools/docker/images/nginx/root/etc/nginx/conf.d/default.conf @@ -1,623 +1,627 @@ -server { - listen 80; - listen [::]:80; - server_name oliverdavies.uk; - - return 301 http://www.oliverdavies.uk$request_uri; +map $uri $new_uri { + ~^/10-useful-drupal-6-modules-i-use-every-project$ /blog/10-useful-drupal-6-modules; + ~^/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; + ~^/2010/04/28/using-imagecache-and-imagecrop-for-my-portfolio$ /blog/using-imagecache-imagecrop-my-portfolio; + ~^/2010/05/29/importing-images-using-the-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; + ~^/2010/06/23/creating-a-block-of-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-nodequeue; + ~^/2010/07/05/thanks$ /blog/thanks; + ~^/2010/08/17/create-a-better-photo-gallery-in-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; + ~^/2014/05/21/git-format-patch$ /blog/git-format-patch-your-friend; + ~^/2PxmyqP$ /articles/examples-of-laravel-collections-in-drupal; + ~^/39CoG$ /articles/drupalcamp-london-testing-workshop; + ~^/3eGQr$ https://github.com/howToCodeWell/howToCodeWellFM/blob/c927e0b3589f1d7375002f7fd70f0bfc9fc90449/composer.json#L17; + ~^/6UhLN$ https://github.com/opdavies/sculpin-twig-markdown-bundle/pull/1; + ~^/6i3YZ$ https://www.youtube.com/watch?v=vUK5sEbd-dk; + ~^/9rv0Z$ https://www.drupal.org/project/override_node_options/issues/3109852; + ~^/BhMZi$ https://git.drupalcode.org/search?utf8=%E2%9C%93&snippets=&scope=&repository_ref=8.x-1.x&search=baz&project_id=23203; + ~^/NBi5h$ https://git.drupalcode.org/search?utf8=%E2%9C%93&search=bar&group_id=&project_id=23203&search_code=true&repository_ref=8.x-1.x&nav_source=navbar; + ~^/P5KQ5$ https://www.npmjs.com/package/tailwindcss-skip-link; + ~^/S8ZDA$ /articles/rebuilding-bartik-with-vuejs-tailwind-css-part-2; + ~^/Wh48P$ https://github.com/opdavies/oliverdavies.uk/blob/master/source/_partials/talk/video.html.twig; + ~^/XbzS2$ https://github.com/opdavies/gmail-filter-builder; + ~^/YK1VH$ /articles/psr4-autoloading-test-cases-drupal-7; + ~^/YilTZ$ https://drupalcamp.london/tickets/training; + ~^/about/?$ /; + ~^/about/cv/?$ /cv; + ~^/about/speaker-information$ /speaker-information; + ~^/acquia-certifications$ https://certification.acquia.com/registry?fname=Oliver&lname=Davies&city=&state=&country=United+Kingdom&org=&exam=All; + ~^/acquia-certified$ https://certification.acquia.com/?fname=Oliver&lname=Davies; + ~^/ansible$ https://galaxy.ansible.com/opdavies; + ~^/ansible-molecule$ /articles/test-driven-ansible-role-development-molecule; + ~^/ansistrano-code$ https://github.com/opdavies/dransible; + ~^/ansistrano-demo$ https://www.youtube.com/watch?v=PLS4ET7FAcU; + ~^/ansistrano-slides$ /talks/deploying-php-ansible-ansistrano; + ~^/articles/(.*)$ /blog/$1; + ~^/articles/10-useful-drupal-6-modules$ /blog/10-useful-drupal-6-modules; + ~^/articles/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery; + ~^/articles/2010/04/28/using-imagecache-and-imagecrop-my-portfolio$ /blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio; + ~^/articles/2010/05/06/conditional-email-addresses-webform$ /blog/2010/05/06/conditional-email-addresses-webform; + ~^/articles/2010/05/10/quickly-create-zen-subthemes-using-zenophile$ /blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile; + ~^/articles/2010/05/25/create-slideshow-multiple-images-using-fancy-slide$ /blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide; + ~^/articles/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module; + ~^/articles/2010/06/02/improve-jpg-quality-imagecache-and-imageapi$ /blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi; + ~^/articles/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue; + ~^/articles/2010/06/25/10-useful-drupal-6-modules$ /blog/2010/06/25/10-useful-drupal-6-modules; + ~^/articles/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views; + ~^/articles/2010/07/01/change-content-type-multiple-nodes-using-sql$ /blog/2010/07/01/change-content-type-multiple-nodes-using-sql; + ~^/articles/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx; + ~^/articles/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql$ /blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql; + ~^/articles/2010/07/12/review-teleport-module$ /blog/2010/07/12/review-teleport-module; + ~^/articles/2010/07/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; + ~^/articles/2010/08/10/review-adminhover-module$ /blog/2010/08/10/review-adminhover-module; + ~^/articles/2010/08/11/create-better-photo-gallery-drupal-part-1$ /blog/2010/08/11/create-better-photo-gallery-drupal-part-1; + ~^/articles/2010/08/17/create-better-photo-gallery-drupal-part-2$ /blog/2010/08/17/create-better-photo-gallery-drupal-part-2; + ~^/articles/2010/08/20/review-image-caption-module$ /blog/2010/08/20/review-image-caption-module; + ~^/articles/2010/09/26/south-wales-drupal-user-group$ /blog/2010/09/26/south-wales-drupal-user-group; + ~^/articles/2010/10/10/create-and-apply-patches$ /blog/2010/10/10/create-and-apply-patches; + ~^/articles/2010/10/13/create-better-photo-gallery-drupal-part-3$ /blog/2010/10/13/create-better-photo-gallery-drupal-part-3; + ~^/articles/2010/10/22/create-better-photo-gallery-drupal-part-21$ /blog/2010/10/22/create-better-photo-gallery-drupal-part-21; + ~^/articles/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate; + ~^/articles/2011/02/14/easily-embed-typekit-fonts-your-drupal-website$ /blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website; + ~^/articles/2011/03/15/display-number-facebook-fans-php$ /blog/2011/03/15/display-number-facebook-fans-php; + ~^/articles/2011/03/31/proctor-stevenson$ /blog/2011/03/31/proctor-stevenson; + ~^/articles/2011/05/20/proctors-hosting-next-drupal-meetup$ /blog/2011/05/20/proctors-hosting-next-drupal-meetup; + ~^/articles/2011/05/23/imagefield-import-archive$ /blog/2011/05/23/imagefield-import-archive; + ~^/articles/2011/08/28/create-multigroups-drupal-7-using-field-collections$ /blog/2011/08/28/create-multigroups-drupal-7-using-field-collections; + ~^/articles/2011/10/19/install-and-configure-subversion-svn-server-ubuntu$ /blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu; + ~^/articles/2012/01/04/site-upgraded-drupal-7$ /blog/2012/01/04/site-upgraded-drupal-7; + ~^/articles/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection$ /blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection; + ~^/articles/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; + ~^/articles/2012/04/17/installing-nagios-centos$ /blog/2012/04/17/installing-nagios-centos; + ~^/articles/2012/04/19/adding-custom-theme-templates-drupal-7$ /blog/2012/04/19/adding-custom-theme-templates-drupal-7; + ~^/articles/2012/05/23/add-date-popup-calendar-custom-form$ /blog/2012/05/23/add-date-popup-calendar-custom-form; + ~^/articles/2012/05/23/checkout-specific-revision-svn-command-line$ /blog/2012/05/23/checkout-specific-revision-svn-command-line; + ~^/articles/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess; + ~^/articles/2012/05/23/prevent-apache-displaying-text-files-within-web-browser$ /blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser; + ~^/articles/2012/05/23/writing-info-file-drupal-7-theme$ /blog/2012/05/23/writing-info-file-drupal-7-theme; + ~^/articles/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files; + ~^/articles/2012/07/12/my-new-drupal-modules$ /blog/2012/07/12/my-new-drupal-modules; + ~^/articles/2012/07/14/install-nomensa-media-player-drupal$ /blog/2012/07/14/install-nomensa-media-player-drupal; + ~^/articles/2012/07/27/writing-article-linux-journal$ /blog/2012/07/27/writing-article-linux-journal; + ~^/articles/2012/08/18/display-custom-menu-drupal-7-theme-template-file$ /blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file; + ~^/articles/2012/09/06/reflections-speaking-unifieddiff$ /blog/2012/09/06/reflections-speaking-unifieddiff; + ~^/articles/2012/10/25/my-sublime-text-2-settings$ /blog/2012/10/25/my-sublime-text-2-settings; + ~^/articles/2012/11/15/accessible-bristol-site-launched$ /blog/2012/11/15/accessible-bristol-site-launched; + ~^/articles/2012/11/17/open-sublime-text-2-mac-os-x-command-line$ /blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line; + ~^/articles/2012/12/06/use-sass-and-compass-drupal-7-using-sassy$ /blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy; + ~^/articles/2013/01/09/checking-if-user-logged-drupal-right-way$ /blog/2013/01/09/checking-if-user-logged-drupal-right-way; + ~^/articles/2013/02/16/creating-and-using-custom-tokens-drupal-7$ /blog/2013/02/16/creating-and-using-custom-tokens-drupal-7; + ~^/articles/2013/03/02/quickest-way-install-sublime-text-2-ubuntu$ /blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu; + ~^/articles/2013/04/20/leaving-nomensa-joining-precedent$ /blog/2013/04/20/leaving-nomensa-joining-precedent; + ~^/articles/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt$ /blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt; + ~^/articles/2013/06/13/some-useful-links-using-simpletest-drupal$ /blog/2013/06/13/some-useful-links-using-simpletest-drupal; + ~^/articles/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled; + ~^/articles/2013/07/26/going-drupalcon$ /blog/2013/07/26/going-drupalcon; + ~^/articles/2013/09/06/create-a-zen-sub-theme-using-drush$ /blog/2013/09/06/create-a-zen-sub-theme-using-drush; + ~^/articles/2013/11/19/dont-bootstrap-drupal-use-drush$ /blog/2013/11/19/dont-bootstrap-drupal-use-drush; + ~^/articles/2013/11/27/useful-vagrant-commands$ /blog/2013/11/27/useful-vagrant-commands; + ~^/articles/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget; + ~^/articles/2013/12/31/download-different-versions-drupal-drush$ /blog/2013/12/31/download-different-versions-drupal-drush; + ~^/articles/2013/12/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-curl-or-wget; + ~^/articles/2014/01/15/some-useful-git-aliases$ /blog/2014/01/15/some-useful-git-aliases; + ~^/articles/2014/02/09/drupalcamp-london-2014$ /blog/2014/02/09/drupalcamp-london-2014; + ~^/articles/2014/03/03/what-git-flow$ /blog/2014/03/03/what-git-flow; + ~^/articles/2014/05/03/drupal-association$ /blog/2014/05/03/drupal-association; + ~^/articles/2014/05/06/thanks$ /blog/2014/05/06/thanks; + ~^/articles/2014/05/21/git-format-patch$ /blog/2014/05/21/git-format-patch; + ~^/articles/2014/07/02/drush-make-drupalbristol$ /blog/2014/07/02/drush-make-drupalbristol; + ~^/articles/2014/10/06/fix-vagrant-loading-wrong-virtual-machine$ /blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine; + ~^/articles/2014/10/21/updating-features-and-adding-components-using-drush$ /blog/2014/10/21/updating-features-and-adding-components-using-drush; + ~^/articles/2014/11/18/include-css-fonts-using-sass-each-loop$ /blog/2014/11/18/include-css-fonts-using-sass-each-loop; + ~^/articles/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module; + ~^/articles/2014/11/27/pantheon-settings-files$ /blog/2014/11/27/pantheon-settings-files; + ~^/articles/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides; + ~^/articles/2015/04/03/how-to-define-a-minimum-drupal-core-version$ /blog/2015/04/03/how-to-define-a-minimum-drupal-core-version; + ~^/articles/2015/06/18/updating-forked-repositories-on-github$ /blog/2015/06/18/updating-forked-repositories-on-github; + ~^/articles/2015/07/19/sculpin-twig-resources$ /blog/2015/07/19/sculpin-twig-resources; + ~^/articles/2015/07/21/automating-sculpin-jenkins$ /blog/2015/07/21/automating-sculpin-jenkins; + ~^/articles/2015/12/22/programmatically-load-an-entityform-in-drupal-7$ /blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7; + ~^/articles/2016/02/15/announcing-the-drupal-vm-generator$ /blog/2016/02/15/announcing-the-drupal-vm-generator; + ~^/articles/2016/05/03/simplifying-drupal-migrations-with-xautoload$ /blog/2016/05/03/simplifying-drupal-migrations-with-xautoload; + ~^/articles/2016/07/15/building-gmail-filters-with-php$ /blog/2016/07/15/building-gmail-filters-with-php; + ~^/articles/2016/12/30/drupal-vm-generator-291-released$ /blog/2016/12/30/drupal-vm-generator-291-released; + ~^/articles/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts; + ~^/articles/2017/01/31/nginx-redirects-with-query-string-arguments$ /blog/2017/01/31/nginx-redirects-with-query-string-arguments; + ~^/articles/2017/05/05/fixing-drupal-simpletest-docker$ /blog/2017/05/05/fixing-drupal-simpletest-docker; + ~^/articles/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers; + ~^/articles/2017/05/20/turning-drupal-module-into-feature$ /blog/turning-your-custom-drupal-module-feature; + ~^/articles/2017/06/09/introducing-the-drupal-meetups-twitterbot$ /blog/2017/06/09/introducing-the-drupal-meetups-twitterbot; + ~^/articles/2017/11/07/tdd-test-driven-drupal$ /blog/2017/11/07/tdd-test-driven-drupal; + ~^/articles/2017/11/07/writing-drupal-module-test-driven-development-tdd$ /blog/2017/11/07/writing-drupal-module-test-driven-development-tdd; + ~^/articles/2018/01/30/drupalcamp-bristol-2018$ /blog/2018/01/30/drupalcamp-bristol-2018; + ~^/articles/2018/02/05/using-tailwind-css-in-your-drupal-theme$ /blog/2018/02/05/using-tailwind-css-in-your-drupal-theme; + ~^/articles/2018/02/27/looking-forward-to-drupalcamp-london$ /blog/2018/02/27/looking-forward-to-drupalcamp-london; + ~^/articles/2018/02/27/queuing-private-messages-in-drupal-8$ /blog/2018/02/27/queuing-private-messages-in-drupal-8; + ~^/articles/2018/02/28/building-the-new-phpsw-website$ /blog/2018/02/28/building-the-new-phpsw-website; + ~^/articles/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back; + ~^/articles/2018/03/04/tweets-from-drupalcamp-london$ /blog/2018/03/04/tweets-from-drupalcamp-london; + ~^/articles/2018/05/06/creating-a-custom-phpunit-command-for-docksal$ /blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal; + ~^/articles/accessible-bristol-site-launched$ /blog/accessible-bristol-site-launched; + ~^/articles/add-date-popup-calendar-custom-form$ /blog/add-date-popup-calendar-custom-form; + ~^/articles/add-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; + ~^/articles/adding-custom-theme-templates-drupal-7$ /blog/adding-custom-theme-templates-drupal-7; + ~^/articles/announcing-the-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; + ~^/articles/automating-sculpin-jenkins$ /blog/automating-sculpin-jenkins; + ~^/articles/building-gmail-filters-with-php$ /blog/building-gmail-filters-with-php; + ~^/articles/building-the-new-phpsw-website$ /blog/building-the-new-phpsw-website; + ~^/articles/change-content-type-multiple-nodes-using-sql$ /blog/change-content-type-multiple-nodes-using-sql; + ~^/articles/checking-if-user-logged-drupal-right-way$ /blog/checking-if-user-logged-drupal-right-way; + ~^/articles/checkout-specific-revision-svn-command-line$ /blog/checkout-specific-revision-svn-command-line; + ~^/articles/conditional-email-addresses-webform$ /blog/conditional-email-addresses-webform; + ~^/articles/create-a-zen-sub-theme-using-drush$ /blog/create-a-zen-sub-theme-using-drush; + ~^/articles/create-and-apply-patches$ /blog/create-and-apply-patches; + ~^/articles/create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; + ~^/articles/create-better-photo-gallery-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; + ~^/articles/create-better-photo-gallery-drupal-part-21$ /blog/create-better-photo-gallery-drupal-part-21; + ~^/articles/create-better-photo-gallery-drupal-part-3$ /blog/create-better-photo-gallery-drupal-part-3; + ~^/articles/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-and-nodequeue; + ~^/articles/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-and-views; + ~^/articles/create-multigroups-drupal-7-using-field-collections$ /blog/create-multigroups-drupal-7-using-field-collections; + ~^/articles/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; + ~^/articles/create-slideshow-multiple-images-using-fancy-slide$ /blog/create-slideshow-multiple-images-using-fancy-slide; + ~^/articles/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; + ~^/articles/creating-a-custom-phpunit-command-for-docksal$ /blog/creating-a-custom-phpunit-command-for-docksal; + ~^/articles/creating-and-using-custom-tokens-drupal-7$ /blog/creating-and-using-custom-tokens-drupal-7; + ~^/articles/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/creating-local-and-staging-sites-drupals-domain-module-enabled; + ~^/articles/display-custom-menu-drupal-7-theme-template-file$ /blog/display-custom-menu-drupal-7-theme-template-file; + ~^/articles/display-git-branch-or-tag-names-your-bash-prompt$ /blog/display-git-branch-or-tag-names-your-bash-prompt; + ~^/articles/display-number-facebook-fans-php$ /blog/display-number-facebook-fans-php; + ~^/articles/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; + ~^/articles/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; + ~^/articles/download-different-versions-drupal-drush$ /blog/download-different-versions-drupal-drush; + ~^/articles/drupal-association$ /blog/drupal-association; + ~^/articles/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-291-released; + ~^/articles/drupalcamp-bristol-2018$ /blog/drupalcamp-bristol-2018; + ~^/articles/drupalcamp-london-2014$ /blog/drupalcamp-london-2014; + ~^/articles/drush-make-drupalbristol$ /blog/drush-make-drupalbristol; + ~^/articles/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-with-composer-and-npm-scripts; + ~^/articles/easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; + ~^/articles/fix-vagrant-loading-wrong-virtual-machine$ /blog/fix-vagrant-loading-wrong-virtual-machine; + ~^/articles/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; + ~^/articles/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/forward-one-domain-another-using-mod-rewrite-and-htaccess; + ~^/articles/git-format-patch$ /blog/git-format-patch; + ~^/articles/going-drupalcon$ /blog/going-drupalcon; + ~^/articles/how-to-define-a-minimum-drupal-core-version$ /blog/how-to-define-a-minimum-drupal-core-version; + ~^/articles/imagefield-import-archive$ /blog/imagefield-import-archive; + ~^/articles/improve-jpg-quality-imagecache-and-imageapi$ /blog/improve-jpg-quality-imagecache-and-imageapi; + ~^/articles/include-css-fonts-using-sass-each-loop$ /blog/include-css-fonts-using-sass-each-loop; + ~^/articles/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; + ~^/articles/install-and-configure-subversion-svn-server-ubuntu$ /blog/install-and-configure-subversion-svn-server-ubuntu; + ~^/articles/install-nomensa-media-player-drupal$ /blog/install-nomensa-media-player-drupal; + ~^/articles/installing-nagios-centos$ /blog/installing-nagios-centos; + ~^/articles/introducing-the-drupal-meetups-twitterbot$ /blog/introducing-the-drupal-meetups-twitterbot; + ~^/articles/leaving-nomensa-joining-precedent$ /blog/leaving-nomensa-joining-precedent; + ~^/articles/looking-forward-to-drupalcamp-london$ /blog/looking-forward-to-drupalcamp-london; + ~^/articles/my-new-drupal-modules$ /blog/my-new-drupal-modules; + ~^/articles/my-sublime-text-2-settings$ /blog/my-sublime-text-2-settings; + ~^/articles/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-with-query-string-arguments; + ~^/articles/open-sublime-text-2-mac-os-x-command-line$ /blog/open-sublime-text-2-mac-os-x-command-line; + ~^/articles/pantheon-settings-files$ /blog/pantheon-settings-files; + ~^/articles/prevent-apache-displaying-text-files-within-web-browser$ /blog/prevent-apache-displaying-text-files-within-web-browser; + ~^/articles/proctor-stevenson$ /blog/proctor-stevenson; + ~^/articles/proctors-hosting-next-drupal-meetup$ /blog/proctors-hosting-next-drupal-meetup; + ~^/articles/programmatically-load-an-entityform-in-drupal-7$ /blog/programmatically-load-an-entityform-in-drupal-7; + ~^/articles/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-in-drupal-8; + ~^/articles/quickest-way-install-sublime-text-2-ubuntu$ /blog/quickest-way-install-sublime-text-2-ubuntu; + ~^/articles/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-and-curl-or-wget; + ~^/articles/quickly-create-zen-subthemes-using-zenophile$ /blog/quickly-create-zen-subthemes-using-zenophile; + ~^/articles/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; + ~^/articles/rebuilding-bartik-with-vuejs-tailwind-css$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css; + ~^/articles/reflections-speaking-unifieddiff$ /blog/reflections-speaking-unifieddiff; + ~^/articles/review-adminhover-module$ /blog/review-adminhover-module; + ~^/articles/review-image-caption-module$ /blog/review-image-caption-module; + ~^/articles/review-teleport-module$ /blog/review-teleport-module; + ~^/articles/sculpin-twig-resources$ /blog/sculpin-twig-resources; + ~^/articles/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-with-xautoload; + ~^/articles/site-upgraded-drupal-7$ /blog/site-upgraded-drupal-7; + ~^/articles/some-useful-git-aliases$ /blog/some-useful-git-aliases; + ~^/articles/some-useful-links-using-simpletest-drupal$ /blog/some-useful-links-using-simpletest-drupal; + ~^/articles/south-wales-drupal-user-group$ /blog/south-wales-drupal-user-group; + ~^/articles/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery; + ~^/articles/tdd-test-driven-drupal$ /blog/tdd-test-driven-drupal; + ~^/articles/testing-tailwindcss-plugins-with-jest/?$ /blog/testing-tailwind-css-plugins-jest; + ~^/articles/thanks$ /blog/thanks; + ~^/articles/tweets-from-drupalcamp-london$ /blog/tweets-from-drupalcamp-london; + ~^/articles/updating-features-and-adding-components-using-drush$ /blog/updating-features-and-adding-components-using-drush; + ~^/articles/updating-forked-repositories-on-github$ /blog/updating-forked-repositories-on-github; + ~^/articles/use-authorized-keys-create-passwordless-ssh-connection$ /blog/use-authorized-keys-create-passwordless-ssh-connection; + ~^/articles/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-and-replace-coda-or-textmate; + ~^/articles/use-sass-and-compass-drupal-7-using-sassy$ /blog/use-sass-and-compass-drupal-7-using-sassy; + ~^/articles/useful-vagrant-commands$ /blog/useful-vagrant-commands; + ~^/articles/using-imagecache-and-imagecrop-my-portfolio$ /blog/using-imagecache-and-imagecrop-my-portfolio; + ~^/articles/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-stage-file-proxy-module; + ~^/articles/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module; + ~^/articles/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-your-drupal-theme; + ~^/articles/what-git-flow$ /blog/what-git-flow; + ~^/articles/writing-article-linux-journal$ /blog/writing-article-linux-journal; + ~^/articles/writing-info-file-drupal-7-theme$ /blog/writing-info-file-drupal-7-theme; + ~^/articles/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-mediacurrent-contrib-half-hour-back; + ~^/articles/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-the-mediacurrent-contrib-half-hour-is-back; + ~^/atNOQ$ https://youtu.be/r41dkD2EOo8; + ~^/automatically-updating-talk-created-date$ https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6; + ~^/blog.xml$ /rss.xml; + ~^/blog/10-useful-drupal-6-modules$ /blog/useful-drupal-6-modules; + ~^/blog/10-years-working-full-time-drupal$ /blog/10-years-working-full-time-drupal-php; + ~^/blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery; + ~^/blog/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; + ~^/blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio$ /blog/using-imagecache-and-imagecrop-my-portfolio; + ~^/blog/2010/05/06/conditional-email-addresses-webform$ /blog/conditional-email-addresses-webform; + ~^/blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile$ /blog/quickly-create-zen-subthemes-using-zenophile; + ~^/blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide$ /blog/create-slideshow-multiple-images-using-fancy-slide; + ~^/blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; + ~^/blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi$ /blog/improve-jpg-quality-imagecache-and-imageapi; + ~^/blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-and-nodequeue; + ~^/blog/2010/06/25/10-useful-drupal-6-modules$ /blog/10-useful-drupal-6-modules; + ~^/blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-and-views; + ~^/blog/2010/07/01/change-content-type-multiple-nodes-using-sql$ /blog/change-content-type-multiple-nodes-using-sql; + ~^/blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; + ~^/blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; + ~^/blog/2010/07/07/quickly-adding-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; + ~^/blog/2010/07/12/overview-teleport-module$ /blog/review-teleport-module; + ~^/blog/2010/07/12/review-teleport-module$ /blog/review-teleport-module; + ~^/blog/2010/08/10/review-adminhover-module$ /blog/review-adminhover-module; + ~^/blog/2010/08/11/create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; + ~^/blog/2010/08/11/how-create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; + ~^/blog/2010/08/17/create-better-photo-gallery-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; + ~^/blog/2010/08/20/review-image-caption-module$ /blog/review-image-caption-module; + ~^/blog/2010/09/26/south-wales-drupal-user-group$ /blog/south-wales-drupal-user-group; + ~^/blog/2010/10/10/create-and-apply-patches$ /blog/create-and-apply-patches; + ~^/blog/2010/10/13/create-better-photo-gallery-drupal-part-3$ /blog/create-better-photo-gallery-drupal-part-3; + ~^/blog/2010/10/22/create-better-photo-gallery-drupal-part-21$ /blog/create-better-photo-gallery-drupal-part-21; + ~^/blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-and-replace-coda-or-textmate; + ~^/blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; + ~^/blog/2011/03/15/display-number-facebook-fans-php$ /blog/display-number-facebook-fans-php; + ~^/blog/2011/03/31/proctor-stevenson$ /blog/proctor-stevenson; + ~^/blog/2011/05/20/proctors-hosting-next-drupal-meetup$ /blog/proctors-hosting-next-drupal-meetup; + ~^/blog/2011/05/23/imagefield-import-archive$ /blog/imagefield-import-archive; + ~^/blog/2011/08/28/create-multigroups-drupal-7-using-field-collections$ /blog/create-multigroups-drupal-7-using-field-collections; + ~^/blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu$ /blog/install-and-configure-subversion-svn-server-ubuntu; + ~^/blog/2012/01/04/site-upgraded-drupal-7$ /blog/site-upgraded-drupal-7; + ~^/blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection$ /blog/use-authorized-keys-create-passwordless-ssh-connection; + ~^/blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; + ~^/blog/2012/04/17/installing-nagios-centos$ /blog/installing-nagios-centos; + ~^/blog/2012/04/19/adding-custom-theme-templates-drupal-7$ /blog/adding-custom-theme-templates-drupal-7; + ~^/blog/2012/05/23/add-date-popup-calendar-custom-form$ /blog/add-date-popup-calendar-custom-form; + ~^/blog/2012/05/23/checkout-specific-revision-svn-command-line$ /blog/checkout-specific-revision-svn-command-line; + ~^/blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/forward-one-domain-another-using-mod-rewrite-and-htaccess; + ~^/blog/2012/05/23/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; + ~^/blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser$ /blog/prevent-apache-displaying-text-files-within-web-browser; + ~^/blog/2012/05/23/writing-info-file-drupal-7-theme$ /blog/writing-info-file-drupal-7-theme; + ~^/blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; + ~^/blog/2012/05/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; + ~^/blog/2012/07/12/my-new-drupal-modules$ /blog/my-new-drupal-modules; + ~^/blog/2012/07/14/install-nomensa-media-player-drupal$ /blog/install-nomensa-media-player-drupal; + ~^/blog/2012/07/27/writing-article-linux-journal$ /blog/writing-article-linux-journal; + ~^/blog/2012/07/install-and-configure-nomensa-accessible-media-player-drupal$ /blog/install-configure-nomensa-accessible-media-player-drupal; + ~^/blog/2012/07/nomensa-accessible-media-player-drupal$ /blog/install-configure-nomensa-accessible-media-player-drupal; + ~^/blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file$ /blog/display-custom-menu-drupal-7-theme-template-file; + ~^/blog/2012/09/06/reflections-speaking-unifieddiff$ /blog/reflections-speaking-unifieddiff; + ~^/blog/2012/10/25/my-sublime-text-2-settings$ /blog/my-sublime-text-2-settings; + ~^/blog/2012/11/15/accessible-bristol-site-launched$ /blog/accessible-bristol-site-launched; + ~^/blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line$ /blog/open-sublime-text-2-mac-os-x-command-line; + ~^/blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy$ /blog/use-sass-and-compass-drupal-7-using-sassy; + ~^/blog/2013/01/09/checking-if-user-logged-drupal-right-way$ /blog/checking-if-user-logged-drupal-right-way; + ~^/blog/2013/02/16/creating-and-using-custom-tokens-drupal-7$ /blog/creating-and-using-custom-tokens-drupal-7; + ~^/blog/2013/02/creating-and-using-custom-tokens-drupal-7$ /blog/creating-using-custom-tokens-drupal-7; + ~^/blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu$ /blog/quickest-way-install-sublime-text-2-ubuntu; + ~^/blog/2013/04/20/leaving-nomensa-joining-precedent$ /blog/leaving-nomensa-joining-precedent; + ~^/blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt$ /blog/display-git-branch-or-tag-names-your-bash-prompt; + ~^/blog/2013/06/13/some-useful-links-using-simpletest-drupal$ /blog/some-useful-links-using-simpletest-drupal; + ~^/blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/creating-local-and-staging-sites-drupals-domain-module-enabled; + ~^/blog/2013/07/26/going-drupalcon$ /blog/going-drupalcon; + ~^/blog/2013/09/06/create-a-zen-sub-theme-using-drush$ /blog/create-a-zen-sub-theme-using-drush; + ~^/blog/2013/09/create-zen-sub-theme-using-drush$ /blog/create-zen-sub-theme-using-drush; + ~^/blog/2013/11/19/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; + ~^/blog/2013/11/27/useful-vagrant-commands$ /blog/useful-vagrant-commands; + ~^/blog/2013/11/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; + ~^/blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-and-curl-or-wget; + ~^/blog/2013/12/31/download-different-versions-drupal-drush$ /blog/download-different-versions-drupal-drush; + ~^/blog/2014/01/15/some-useful-git-aliases$ /blog/some-useful-git-aliases; + ~^/blog/2014/02/09/drupalcamp-london-2014$ /blog/drupalcamp-london-2014; + ~^/blog/2014/03/03/what-git-flow$ /blog/what-git-flow; + ~^/blog/2014/05/03/drupal-association$ /blog/drupal-association; + ~^/blog/2014/05/06/thanks$ /blog/thanks; + ~^/blog/2014/05/21/git-format-patch$ /blog/git-format-patch; + ~^/blog/2014/07/02/drush-make-drupalbristol$ /blog/drush-make-drupalbristol; + ~^/blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine$ /blog/fix-vagrant-loading-wrong-virtual-machine; + ~^/blog/2014/10/21/updating-features-and-adding-components-using-drush$ /blog/updating-features-and-adding-components-using-drush; + ~^/blog/2014/11/18/include-css-fonts-using-sass-each-loop$ /blog/include-css-fonts-using-sass-each-loop; + ~^/blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module; + ~^/blog/2014/11/27/pantheon-settings-files$ /blog/pantheon-settings-files; + ~^/blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; + ~^/blog/2015/04/03/how-to-define-a-minimum-drupal-core-version$ /blog/how-to-define-a-minimum-drupal-core-version; + ~^/blog/2015/06/18/updating-forked-repositories-on-github$ /blog/updating-forked-repositories-on-github; + ~^/blog/2015/07/19/sculpin-twig-resources$ /blog/sculpin-twig-resources; + ~^/blog/2015/07/21/automating-sculpin-jenkins$ /blog/automating-sculpin-jenkins; + ~^/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7$ /blog/programmatically-load-an-entityform-in-drupal-7; + ~^/blog/2016/02/15/announcing-the-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; + ~^/blog/2016/05/03/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-with-xautoload; + ~^/blog/2016/07/15/building-gmail-filters-with-php$ /blog/building-gmail-filters-with-php; + ~^/blog/2016/12/30/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-291-released; + ~^/blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-with-composer-and-npm-scripts; + ~^/blog/2017/01/31/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-with-query-string-arguments; + ~^/blog/2017/05/05/fixing-drupal-simpletest-docker$ /blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers; + ~^/blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; + ~^/blog/2017/05/20/turning-drupal-module-into-feature$ /blog/turning-your-custom-drupal-module-feature; + ~^/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot$ /blog/introducing-the-drupal-meetups-twitterbot; + ~^/blog/2017/07/13/publishing-sculpin-sites-with-github-pages$ /blog/publishing-sculpin-sites-github-pages; + ~^/blog/2017/11/07/tdd-test-driven-drupal$ /blog/tdd-test-driven-drupal; + ~^/blog/2017/11/07/writing-drupal-module-test-driven-development-tdd$ /blog/2017/11/07/tdd-test-driven-drupal; + ~^/blog/2018/01/30/drupalcamp-bristol-2018$ /blog/drupalcamp-bristol-2018; + ~^/blog/2018/02/05/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-in-your-drupal-theme; + ~^/blog/2018/02/27/looking-forward-to-drupalcamp-london$ /blog/looking-forward-to-drupalcamp-london; + ~^/blog/2018/02/27/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-in-drupal-8; + ~^/blog/2018/02/28/building-the-new-phpsw-website$ /blog/building-the-new-phpsw-website; + ~^/blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-the-mediacurrent-contrib-half-hour-is-back; + ~^/blog/2018/03/04/tweets-from-drupalcamp-london$ /blog/tweets-from-drupalcamp-london; + ~^/blog/2018/04/23/back-to-the-future-git-diff-apply$ /blog/back-future-gits-diff-apply-commands; + ~^/blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal$ /blog/creating-a-custom-phpunit-command-for-docksal; + ~^/blog/add-date-popup-calendar-custom-form$ /blog/how-add-date-popup-calendar-custom-form; + ~^/blog/adding-methods-decorating-entity-metadata-wrapper$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods; + ~^/blog/announcing-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; + ~^/blog/announcing-the-drupal-vm-config-generator$ /blog/announcing-the-drupal-vm-generator; + ~^/blog/back-to-the-future-git-diff-apply$ /blog/back-future-gits-diff-apply-commands; + ~^/blog/building-gmail-filters-in-php$ /blog/building-gmail-filters-php; + ~^/blog/building-new-phpsw-website$ /blog/building-the-new-phpsw-website; + ~^/blog/building-presentation-slides-reveal-js-tailwind-css$ /blog/building-presentation-slides-rst2pdf; + ~^/blog/building-speaker-leaderboard-php-south-wales-using-drupal-symfony$ /blog/building-speaker-leaderboard-php-south-wales-drupal-symfony; + ~^/blog/create-and-apply-patches$ /blog/how-create-apply-patches; + ~^/blog/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-views; + ~^/blog/creating-and-using-custom-tokens-drupal-7$ /blog/creating-using-custom-tokens-drupal-7; + ~^/blog/creating-custom-docksal-commands$ /blog/creating-custom-phpunit-command-docksal; + ~^/blog/debugging-drupal-commerce-promotions-illiminate-collections$ /blog/debugging-drupal-commerce-illuminate-collections; + ~^/blog/decorating-entity-metadata-wrapper-add-add-refactor-methods$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods; + ~^/blog/dev-book-club-refactoring-chapter-1$ /blog/dev-book-club-notes-refactoring-chapter-1; + ~^/blog/dividing-drupals-process-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; + ~^/blog/drupal-8-commerce-fixing-no-such-customer-error-checkout$ /blog/drupal-8-commerce-fixing-error-on-user-checkout; + ~^/blog/drupal-8-commerce-fixing-no-such-customer-error-on-checkout$ /blog/drupal-8-commerce-fixing-no-such-customer-error-checkout; + ~^/blog/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-updates; + ~^/blog/drupalcamp-london-2019-tickets$ /blog/drupalcamp-london-2019-tickets-available-call-sessions; + ~^/blog/drush-make-drupalbristol$ /talks/drush-make-drupalbristol; + ~^/blog/easier-git-repository-cloning-with-insteadof$ /blog/easier-git-repository-cloning-insteadof; + ~^/blog/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-composer-npm-scripts; + ~^/blog/editing-meetup-videos-kdenlive$ /blog/editing-meetup-videos-linux-kdenlive; + ~^/blog/examples-of-laravel-collections-in-drupal$ /blog/using-laravel-collections-drupal; + ~^/blog/experimenting-with-events-in-drupal-8$ /blog/experimenting-events-drupal-8; + ~^/blog/fix-vagrant-loading-wrong-virtual-machine$ /blog/how-fix-vagrant-loading-wrong-virtual-machine; + ~^/blog/fixing-drupal-simpletest-docker$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; + ~^/blog/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; + ~^/blog/git-format-patch$ /blog/git-format-patch-your-friend; + ~^/blog/how-easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; + ~^/blog/how-split-new-drupal-contrib-project-within-another-repository$ /blog/splitting-new-drupal-project-from-repo; + ~^/blog/how-style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; + ~^/blog/include-local-drupal-settings-file-environment-configuration-overrides /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; + ~^/blog/install-and-configure-subversion-svn-server-ubuntu$ /blog/how-install-configure-subversion-svn-server-ubuntu; + ~^/blog/live-blogging-symfonylive-london$ /blog/live-blogging-symfonylive-london-2019; + ~^/blog/minimum-core-version$ /blog/how-define-minimum-drupal-core-version; + ~^/blog/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-query-string-arguments; + ~^/blog/null-users-and-system-users-in-drupal$ /blog/null-users-system-users-drupal; + ~^/blog/overridding-phpcs-configuration-drupal-ci$ /blog/overriding-phpcs-configuration-drupal-ci; + ~^/blog/pantheon-settings-files$ /blog/include-environment-specific-settings-files-pantheon; + ~^/blog/pdfpc-pdf-presenter-console-notes$ /blog/presenting-pdf-slides-using-pdfpc-pdf-presenter-console; + ~^/blog/php-apps-subdirectory-nginx$ /blog/how-put-your-php-application-subdirectory-another-site-nginx; + ~^/blog/presenting-tailwind-css-ansible-cms-philly$ /blog/presenting-on-tailwind-css-and-ansible-at-cms-philly; + ~^/blog/programmatically-load-an-entityform-in-drupal-7$ /blog/entityform; + ~^/blog/programmatically-load-entityform-drupal-7$ /blog/entityform; + ~^/blog/published-my-first-docker-images-docker-hub$ /blog/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf; + ~^/blog/publishing-sculpin-sites-github-pages$ /blog/publishing-sculpin-sites-with-github-pages; + ~^/blog/publishing-sculpin-sites-with-github-pages$ /blog/publishing-sculpin-sites-github-pages; + ~^/blog/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-drupal-8; + ~^/blog/quick-project-switching-in-phpstorm$ /blog/quick-project-switching-phpstorm; + ~^/blog/quickly-apply-patches-using-git-and-curl-or-wget/?$ /blog/quickly-apply-patches-using-git-curl-or-wget; + ~^/blog/rebuilding-bartik-with-vuejs-tailwind-css$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css; + ~^/blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2; + ~^/blog/rebuilding-uis-tailwind-css$ /blog/uis-ive-rebuilt-tailwind-css; + ~^/blog/restructuring-my-tailwindjs-config-files$ /blog/restructuring-my-tailwindjs-configuration-files; + ~^/blog/retrieving-profile-data-user-using-entity-metadata-wrapper$ /blog/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper; + ~^/blog/running-drupal-with-symfony-local-server$ /blog/running-drupal-88-symfony-local-server; + ~^/blog/running-phpunit-tests-docksal-phpstorm$ /blog/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm; + ~^/blog/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-xautoload; + ~^/blog/speaking-drupalcon-barcelona-2020$ /blog/speaking-drupalcon-europe-2020; + ~^/blog/speaking-during-lockdown$ /blog/speaking-remotely-during-covid-19; + ~^/blog/speaking-remotely-during-lockdown$ /blog/speaking-remotely-during-covid-19; + ~^/blog/survey-results-my-drupalcon-europe-session$ /blog/survey-results-my-drupalcon-europe-session-test-driven-drupal; + ~^/blog/system-users-null-users$ /blog/null-users-and-system-users-in-drupal; + ~^/blog/test-driven-drupal-gitstore-leanpub$ /blog/test-driven-drupal-on-gitstore-leanpub; + ~^/blog/test-driven-drupal-presentation-drupalcon-europe-0$ /blog/test-driven-drupal-presentation-drupalcon-europe; + ~^/blog/test-driven-drupal-session-drupalcon-europe$ /blog/test-driven-drupal-presentation-drupalcon-europe; + ~^/blog/test-driven-drupal-session-video-drupalcon-europe$ /blog/test-driven-drupal-presentation-drupalcon-europe; + ~^/blog/testing-tailwind-css-plugins-with-jest$ /blog/testing-tailwind-css-plugins-jest; + ~^/blog/testing-tailwindcss-plugins-with-jest$ /blog/testing-tailwind-css-plugins-jest; + ~^/blog/tweets-from-drupalcamp-london$ /blog/tweets-drupalcamp-london; + ~^/blog/updating-features-and-adding-components-using-drush$ /blog/updating-features-adding-components-using-drush; + ~^/blog/updating-forked-repositories-github$ /blog/updating-forked-github-repos; + ~^/blog/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-replace-coda-or-textmate; + ~^/blog/using-environment-variables-settings-docksal$ /blog/how-use-environment-variables-your-drupal-settings-docksal; + ~^/blog/using-psr-4-autoloading-your-drupal-7-test-cases$ /blog/psr4-autoloading-test-cases-drupal-7; + ~^/blog/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-your-drupal-theme; + ~^/blog/using-the-pcss-extension-postcss-webpack-encore$ /blog/using-pcss-extension-postcss-webpack-encore; + ~^/blog/weeknotes-june-5th$ /blog/weeknotes-2021-06-05; + ~^/blog/writing-drupal-module-test-driven-development-tdd$ /blog/writing-new-drupal-8-module-using-test-driven-development-tdd; + ~^/book$ /test-driven-drupal; + ~^/calendar$ https://savvycal.com/opdavies/chat; + ~^/cms-philly$ /articles/presenting-on-tailwind-css-and-ansible-at-cms-philly; + ~^/code-enigma-interview$ https://blog.codeenigma.com/interview-with-a-drupal-expert-9fcd8e0fad28; + ~^/contrib-half-hour$ https://www.youtube.com/playlist?list=PLu-MxhbnjI9rHroPvZO5LEUhr58Yl0j_F; + ~^/contribution-day$ https://github.com/microserve-io/contribution-day/; + ~^/d0P5z$ /talks/drupal-8-php-libraries-drupalorg-api; + ~^/dcbristol-cfp$ https://www.papercall.io/drupalcamp-bristol-2019; + ~^/dcbristol17-videos$ https://www.youtube.com/playlist?list=PLOwPvExSyLLngtd6R4PUD9MCXa6QL_obA; + ~^/dcbristol19-announced$ /articles/drupalcamp-bristol-2019-speakers-sessions-announced; + ~^/dclondon-sat$ https://drupalcamp.london/schedule/saturday; + ~^/dclondon-sun$ https://drupalcamp.london/schedule/sunday; + ~^/dclondon20$ /articles/drupalcamp-london-testing-workshop; + ~^/ddev-phpunit-command$ /blog/creating-custom-phpunit-command-ddev; + ~^/deploying-php-ansible$ /talks/deploying-php-ansible-ansistrano; + ~^/dks7E$ https://www.youtube.com/watch?v=PLS4ET7FAcU; + ~^/do-library$ https://github.com/opdavies/drupalorg-api-php; + ~^/do-projects$ https://github.com/opdavies/drupal-module-drupalorg-projects; + ~^/docksal-phpunit-phpstorm$ /articles/running-phpunit-tests-docksal-phpstorm; + ~^/docksal-posts$ /articles/tags/docksal; + ~^/dransible$ https://github.com/opdavies/dransible; + ~^/dransible-drupal-9$ /blog/upgrading-dransible-project-drupal-9; + ~^/drupal-bristol-march-19$ https://docs.google.com/presentation/d/1pk9LIN-hHX73kvDdo-lzgmKlAeH33_K_uvI0t7A-rvY/edit?usp=sharing; + ~^/drupal-core-live-stream$ https://www.youtube.com/watch?v=OK4FWwh1gQU; + ~^/drupal-core-testing-gate$ https://www.drupal.org/core/gates#testing; + ~^/drupal-first-time-issues$ https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice; + ~^/drupal-forum-post$ http://www.webmaster-forums.net/webmasters-corner/developing-my-website-using-php-and-mysql#comment-1231537; + ~^/drupal-marketplace-uk$ https://www.drupal.org/drupal-services?offices%5B%5D=24460; + ~^/drupal-meetups-twitterbot$ /articles/introducing-the-drupal-meetups-twitterbot; + ~^/drupal-novice-issues$ https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice; + ~^/drupal-php-developer-consultant-uk$ /drupal-php-developer; + ~^/drupal-tailwind-demo$ https://www.youtube.com/watch?v=1eM-Gw6GI4g; + ~^/drupal-tailwindcss$ https://www.drupal.org/project/tailwindcss; + ~^/drupal-vuejs$ /talks/decoupling-drupal-vuejs/; + ~^/drupalcamp-london-2019-tickets$ /articles/drupalcamp-london-2019-tickets; + ~^/drupalcamp-nyc-training$ https://www.youtube.com/watch?v=3M9c4UUzKm0; + ~^/drupalorg$ https://www.drupal.org/u/opdavies; + ~^/drupalorg-project-issues$ https://www.drupal.org/project/issues/search?projects=Override+Node+Options%2C+Tailwind+CSS+Starter+Kit%2C+Block+ARIA+Landmark+Roles%2C+Copyright+Block+module%2C+System+User%2C+Null+User%2C+Collection+class%2C+Pathauto+Menu+Link%2C+Webform+ARIA&project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&issue_tags_op=%3D; + ~^/drupalversary$ https://github.com/opdavies/drupal-module-drupalversary; + ~^/elewant$ https://elewant.com/shepherd/admire/opdavies; + ~^/feed$ /rss.xml; + ~^/first-drupal-core-issue$ https://www.drupal.org/project/drupal/issues/753898; + ~^/first-npm-package$ https://www.npmjs.com/package/tailwindcss-vuejs; + ~^/freeagent$ https://opdavies.freeagent.com; + ~^/git-flow$ /talks/git-flow; + ~^/gitlab$ https://gitlab.com/opdavies; + ~^/gitstore$ https://enjoy.gitstore.app/maintainers/opdavies; + ~^/gmail-filters$ https://gitlab.com/opdavies/gmail-filters; + ~^/images/me-precedent.jpg$ /sites/default/files/images/social-avatar.jpg; + ~^/inviqa-tailwind-demo$ https://play.tailwindcss.com/Yfmw8O5UNN; + ~^/inviqa-tailwind-notes$ https://gist.github.com/opdavies/e6f0f4938506a6859acf1aca8b4e1a74; + ~^/join-php-south-wales-slack$ https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA; + ~^/jy6rW$ https://www.meetup.com/PHP-South-Wales/events/264731393; + ~^/kB6Jd$ /articles/running-drupal-with-symfony-local-server/; + ~^/kmDRA$ https://www.bbc.co.uk/news/uk-46561779; + ~^/leeds-php-drupal-9$ https://www.meetup.com/leedsphp/events/272504993; + ~^/links$ /; + ~^/london-half-term-map$ https://www.google.com/maps/d/u/0/viewer?mid=1d-7ruqjlm2vKF_Fwhu_-5CDfr2TyUuhB&hl=en&ll=51.50411420613797%2C-0.12409831347656564&z=13; + ~^/luke-dinosaurs$ https://luke-dinosaurs.netlify.com/; + ~^/luke-recycling$ https://luke-recycling.netlify.com/; + ~^/microserve-issues$ https://www.drupal.org/project/issues/search?status[]=Open&issue_tags=Microserve; + ~^/microserve-issues-need-review$ https://www.drupal.org/project/issues/search?projects=&project_issue_followers=&status%5B%5D=8&issue_tags_op=%3D&issue_tags=Microserve; + ~^/npm$ https://www.npmjs.com/~opdavies; + ~^/oFlkS$ /articles/test-driven-drupal-on-gitstore-leanpub; + ~^/oliver-davies-uk-based-drupal-symfony-developer$ /oliver-davies-uk-based-drupal-php-developer; + ~^/photo-lab-fun-family-portraits$ https://www.apple.com/uk/today/event/photo-lab-fun-family-portraits/6512343695143329889; + ~^/php-ansible$ /talks/deploying-php-ansible-ansistrano; + ~^/php-south-wales-sept-19$ https://joind.in/event/php-south-wales---september-2019-double-docker; + ~^/php-south-wales-slack-invite$ https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA; + ~^/php-south-wales-videos$ https://www.youtube.com/channel/UCzQRSSaIV2Ajvl81BxPQDZA; + ~^/pv176$ https://www.sainsburys.co.uk/shop/gb/groceries/paper---notebooks-44/sainsburys-home-midnight-opulence-a4-floral-notebook-133870966-p; + ~^/qSHAl$ /articles/published-my-first-npm-package/; + ~^/qT1Rb$ https://github.com/opdavies/drupal-meetups-twitterbot; + ~^/rebuilding-acquia$ https://rebuilding-acquia.oliverdavies.uk; + ~^/rebuilding-bartik$ /articles/rebuilding-bartik-with-vuejs-tailwind-css; + ~^/rebuilding-bristol-js$ https://github.com/opdavies/rebuilding-bristol-js; + ~^/rebuilding-pantheon$ https://play.tailwindcss.com/LND98XihGI?layout=horizontal; + ~^/rebuilding-platformsh$ https://rebuilding-platformsh.oliverdavies.uk; + ~^/rebuilding-symfony$ https://github.com/opdavies/rebuilding-symfony; + ~^/rk29B$ https://www.meetup.com/PHP-South-Wales/events/268422525; + ~^/rss$ /rss.xml; + ~^/ruralelec-slider$ https://www.youtube.com/watch?v=-x80ymicm5E; + ~^/s9MjJ$ https://symfonycasts.com/screencast/symfony; + ~^/sIGnJ$ https://microserve.io; + ~^/sculpin-encore-versioning$ https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2; + ~^/skills$ https://opdavies-skills-tailwindcss.netlify.com/; + ~^/slides-drupal-9$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; + ~^/slides-upgrading-to-drupal-9$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; + ~^/slides-upgrading-to-drupal-9/index.html$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; + ~^/slides-working-with-workspace$ https://slides-working-with-workspace.oliverdavies.uk; + ~^/speaker-info$ /about/speaker-information; + ~^/speaking-videos$ https://www.youtube.com/playlist?list=PLHn41Ay7w7kfAzczswrANch5oHAPZBlvu; + ~^/sprint-day$ https://github.com/microserve-io/contribution-day/; + ~^/sprint-setup$ https://github.com/microserve-io/contribution-day/; + ~^/stream$ https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ/live; + ~^/swap-markdown-parser$ https://github.com/opdavies/sculpin-twig-markdown-bundle-example/tree/swap-markdown-parser; + ~^/symfony$ https://connect.symfony.com/profile/opdavies; + ~^/symfony-server$ /articles/running-drupal-with-symfony-local-server; + ~^/symfonylive$ /articles/live-blogging-symfonylive-london; + ~^/symposium$ https://symposiumapp.com/u/opdavies; + ~^/tailwind-css-talk$ /talks/taking-flight-tailwind-css; + ~^/tailwind-repos$ https://github.com/opdavies?utf8=%E2%9C%93&tab=repositories&q=tailwindcss; + ~^/tailwind-talk$ /talks/taking-flight-with-tailwind-css; + ~^/tailwindcss-demo$ http://tailwindcss-demo.oliverdavies.uk/; + ~^/talks-offer-tweet$ https://twitter.com/opdavies/status/1250870367712935938; + ~^/talks/2012/09/05/what-is-this-drupal-thing-unified-diff$ /talks/what-is-this-drupal-thing; + ~^/talks/2013/07/10/drupal-ldap-swdug$ /talks/drupal-ldap; + ~^/talks/2014/03/01/git-flow-drupalcamp-london-2014$ /talks/git-flow; + ~^/talks/2014/07/02/drush-make-drupalbristol-drupal-bristol$ /talks/drush-make-drupalbristol; + ~^/talks/2014/08/19/drupal-association-swdug$ /talks/drupal-association; + ~^/talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015$ /talks/drupalorg-in-2015-whats-coming-next; + ~^/talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015$ /talks/drupalorg-in-2015-whats-coming-next; + ~^/talks/2015/04/08/drupal-8-phpsw$ /talks/drupal-8; + ~^/talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015$ /talks/test-drive-twig-with-sculpin; + ~^/talks/2015/08/25/dancing-for-drupal-umbristol$ /talks/dancing-for-drupal; + ~^/talks/2015/10/14/sculpin-phpsw$ /talks/sculpin; + ~^/talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016$ /talks/getting-started-with-drupal-8-module-development; + ~^/talks/2016/03/09/drupal-vm-generator-nwdug$ /talks/drupal-vm-generator; + ~^/talks/2016/04/02/drupal-vm-generator-drupal-bristol$ /talks/drupal-vm-generator; + ~^/talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016$ /talks/drupal-8-rejoining-the-herd; + ~^/talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016$ /talks/drupal-vm-meet-symfony-console; + ~^/talks/2016/11/09/drupal-development-with-composer-phpsw$ /talks/drupal-development-with-composer; + ~^/talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol$ /talks/goodbye-drush-make-hello-composer; + ~^/talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol$ /talks/getting-your-data-into-drupal-8; + ~^/talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017$ /talks/getting-your-data-into-drupal-8; + ~^/talks/ansible-ansistrano$ https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano; + ~^/talks/archive$ /talks; + ~^/talks/deploying-php-applications-fabric$ /talks/deploying-php-fabric; + ~^/talks/deploying-php-applications-with-fabric$ /talks/deploying-php-fabric; + ~^/talks/drupal-vm-generator-2$ /talks/drupal-vm-generator; + ~^/talks/drupalorg-2015-2$ /talks/drupalorg-2015; + ~^/talks/drupalorg-in-2015-whats-coming-next$ /talks/drupalorg-2015; + ~^/talks/getting-started-with-drupal-8-module-development$ /drupal-8-module-development; + ~^/talks/having-fun-drupal-8-php-libraries-drupalorg-api$ /talks/drupal-8-php-libraries-drupalorg-api; + ~^/talks/never-commit-master-introduction-git-flow$ /talks/git-flow; + ~^/talks/sculpin$ /talks/building-static-websites-sculpin; + ~^/talks/tailwind$ /talks/taking-flight-with-tailwind-css/; + ~^/talks/using-laravel-collections-outside-laravel/?$ /talks/using-illuminate-collections-outside-laravel; + ~^/talks/working-workspace$ /talks/working-with-workspace; + ~^/tdd-blog$ https://github.com/opdavies/drupal-module-tdd-blog; + ~^/tdd-test-driven-drupal$ /talks/tdd-test-driven-drupal/; + ~^/test-driven-drupal-book$ /test-driven-drupal; + ~^/testing-drupal$ https://www.oliverdavies.uk/talks/tdd-test-driven-drupal; + ~^/testing-drupal-intro$ https://inviqa.com/blog/drupal-automated-testing-introduction; + ~^/testing-tailwind-plugins$ /articles/testing-tailwindcss-plugins-with-jest; + ~^/testing-workshop$ https://github.com/opdavies/workshop-drupal-automated-testing; + ~^/testing-workshop-code$ https://github.com/opdavies/workshop-drupal-automated-testing-code; + ~^/todoist-filters$ https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2; + ~^/twitter-tweaks$ https://github.com/opdavies/chrome-extension-twitter-tweaks; + ~^/upgrading-to-drupal-9$ /talks/upgrading-your-site-drupal-9; + ~^/uxbjV$ https://www.drupal.org/project/copyright_block; + ~^/vyTEF$ https://www.npmjs.com/package/tailwindcss-vuejs; + ~^/webpack-encore-pcss-regex$ https://regexr.com/51iaf; + ~^/wordcamp-bristol-tailwindcss$ https://2019.bristol.wordcamp.org/session/taking-flight-with-tailwind-css; + ~^/wordpress-tailwind$ https://github.com/opdavies/wordcamp-bristol-2019; + ~^/work/?$ /drupal-php-developer; + ~^/working-with-workspace$ /talks/working-with-workspace; + ~^/workshop-drupal-testing$ https://github.com/opdavies/workshop-drupal-automated-testing; + ~^/workspace-demo$ https://github.com/opdavies/working-with-workspace-demo; + ~^/wp-tailwind$ https://wp-tailwind.oliverdavies.uk; + ~^/wp-tailwind-repo$ https://github.com/opdavies/wordcamp-bristol-2019; + ~^/wp-tailwind-starter$ https://github.com/opdavies/wordpress-tailwindcss-startker-kit; + ~^/wp-tailwind-static$ https://wp-tailwind.oliverdavies.uk; + ~^/yXhoS$ /talks/things-you-should-know-about-php; } server { - listen 80; - listen [::]:80; - server_name www.oliverdavies.uk; + listen 80; + listen [::]:80; + server_name www.oliverdavies.uk oliverdavies.uk _; - location / { - root /app; - index index.html index.htm; - } + if ($host != $server_name) { + return 301 $scheme://$server_name$request_uri; + } - error_page 404 /404.html; + location / { + root /app; + index index.html index.htm; + error_page 404 /404.html; + } - rewrite ^/10-useful-drupal-6-modules-i-use-every-project$ /blog/10-useful-drupal-6-modules; - rewrite ^/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; - rewrite ^/2010/04/28/using-imagecache-and-imagecrop-for-my-portfolio$ /blog/using-imagecache-imagecrop-my-portfolio; - rewrite ^/2010/05/29/importing-images-using-the-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; - rewrite ^/2010/06/23/creating-a-block-of-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-nodequeue; - rewrite ^/2010/07/05/thanks$ /blog/thanks; - rewrite ^/2010/08/17/create-a-better-photo-gallery-in-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; - rewrite ^/2014/05/21/git-format-patch$ /blog/git-format-patch-your-friend; - rewrite ^/2PxmyqP$ /articles/examples-of-laravel-collections-in-drupal; - rewrite ^/39CoG$ /articles/drupalcamp-london-testing-workshop; - rewrite ^/3eGQr$ https://github.com/howToCodeWell/howToCodeWellFM/blob/c927e0b3589f1d7375002f7fd70f0bfc9fc90449/composer.json#L17; - rewrite ^/6UhLN$ https://github.com/opdavies/sculpin-twig-markdown-bundle/pull/1; - rewrite ^/6i3YZ$ https://www.youtube.com/watch?v=vUK5sEbd-dk; - rewrite ^/9rv0Z$ https://www.drupal.org/project/override_node_options/issues/3109852; - rewrite ^/BhMZi$ https://git.drupalcode.org/search?utf8=%E2%9C%93&snippets=&scope=&repository_ref=8.x-1.x&search=baz&project_id=23203; - rewrite ^/NBi5h$ https://git.drupalcode.org/search?utf8=%E2%9C%93&search=bar&group_id=&project_id=23203&search_code=true&repository_ref=8.x-1.x&nav_source=navbar; - rewrite ^/P5KQ5$ https://www.npmjs.com/package/tailwindcss-skip-link; - rewrite ^/S8ZDA$ /articles/rebuilding-bartik-with-vuejs-tailwind-css-part-2; - rewrite ^/Wh48P$ https://github.com/opdavies/oliverdavies.uk/blob/master/source/_partials/talk/video.html.twig; - rewrite ^/XbzS2$ https://github.com/opdavies/gmail-filter-builder; - rewrite ^/YK1VH$ /articles/psr4-autoloading-test-cases-drupal-7; - rewrite ^/YilTZ$ https://drupalcamp.london/tickets/training; - rewrite ^/about$ /; - rewrite ^/about/cv$ /cv; - rewrite ^/about/speaker-information$ /speaker-information; - rewrite ^/acquia-certifications$ https://certification.acquia.com/registry?fname=Oliver&lname=Davies&city=&state=&country=United+Kingdom&org=&exam=All; - rewrite ^/acquia-certified$ https://certification.acquia.com/?fname=Oliver&lname=Davies; - rewrite ^/ansible$ https://galaxy.ansible.com/opdavies; - rewrite ^/ansible-molecule$ /articles/test-driven-ansible-role-development-molecule; - rewrite ^/ansistrano-code$ https://github.com/opdavies/dransible; - rewrite ^/ansistrano-demo$ https://www.youtube.com/watch?v=PLS4ET7FAcU; - rewrite ^/ansistrano-slides$ /talks/deploying-php-ansible-ansistrano; - rewrite ^/articles/(.*)$ /blog/$1; - rewrite ^/articles/10-useful-drupal-6-modules$ /blog/10-useful-drupal-6-modules; - rewrite ^/articles/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery; - rewrite ^/articles/2010/04/28/using-imagecache-and-imagecrop-my-portfolio$ /blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio; - rewrite ^/articles/2010/05/06/conditional-email-addresses-webform$ /blog/2010/05/06/conditional-email-addresses-webform; - rewrite ^/articles/2010/05/10/quickly-create-zen-subthemes-using-zenophile$ /blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile; - rewrite ^/articles/2010/05/25/create-slideshow-multiple-images-using-fancy-slide$ /blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide; - rewrite ^/articles/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module; - rewrite ^/articles/2010/06/02/improve-jpg-quality-imagecache-and-imageapi$ /blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi; - rewrite ^/articles/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue; - rewrite ^/articles/2010/06/25/10-useful-drupal-6-modules$ /blog/2010/06/25/10-useful-drupal-6-modules; - rewrite ^/articles/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views; - rewrite ^/articles/2010/07/01/change-content-type-multiple-nodes-using-sql$ /blog/2010/07/01/change-content-type-multiple-nodes-using-sql; - rewrite ^/articles/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx; - rewrite ^/articles/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql$ /blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql; - rewrite ^/articles/2010/07/12/review-teleport-module$ /blog/2010/07/12/review-teleport-module; - rewrite ^/articles/2010/07/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; - rewrite ^/articles/2010/08/10/review-adminhover-module$ /blog/2010/08/10/review-adminhover-module; - rewrite ^/articles/2010/08/11/create-better-photo-gallery-drupal-part-1$ /blog/2010/08/11/create-better-photo-gallery-drupal-part-1; - rewrite ^/articles/2010/08/17/create-better-photo-gallery-drupal-part-2$ /blog/2010/08/17/create-better-photo-gallery-drupal-part-2; - rewrite ^/articles/2010/08/20/review-image-caption-module$ /blog/2010/08/20/review-image-caption-module; - rewrite ^/articles/2010/09/26/south-wales-drupal-user-group$ /blog/2010/09/26/south-wales-drupal-user-group; - rewrite ^/articles/2010/10/10/create-and-apply-patches$ /blog/2010/10/10/create-and-apply-patches; - rewrite ^/articles/2010/10/13/create-better-photo-gallery-drupal-part-3$ /blog/2010/10/13/create-better-photo-gallery-drupal-part-3; - rewrite ^/articles/2010/10/22/create-better-photo-gallery-drupal-part-21$ /blog/2010/10/22/create-better-photo-gallery-drupal-part-21; - rewrite ^/articles/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate; - rewrite ^/articles/2011/02/14/easily-embed-typekit-fonts-your-drupal-website$ /blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website; - rewrite ^/articles/2011/03/15/display-number-facebook-fans-php$ /blog/2011/03/15/display-number-facebook-fans-php; - rewrite ^/articles/2011/03/31/proctor-stevenson$ /blog/2011/03/31/proctor-stevenson; - rewrite ^/articles/2011/05/20/proctors-hosting-next-drupal-meetup$ /blog/2011/05/20/proctors-hosting-next-drupal-meetup; - rewrite ^/articles/2011/05/23/imagefield-import-archive$ /blog/2011/05/23/imagefield-import-archive; - rewrite ^/articles/2011/08/28/create-multigroups-drupal-7-using-field-collections$ /blog/2011/08/28/create-multigroups-drupal-7-using-field-collections; - rewrite ^/articles/2011/10/19/install-and-configure-subversion-svn-server-ubuntu$ /blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu; - rewrite ^/articles/2012/01/04/site-upgraded-drupal-7$ /blog/2012/01/04/site-upgraded-drupal-7; - rewrite ^/articles/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection$ /blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection; - rewrite ^/articles/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; - rewrite ^/articles/2012/04/17/installing-nagios-centos$ /blog/2012/04/17/installing-nagios-centos; - rewrite ^/articles/2012/04/19/adding-custom-theme-templates-drupal-7$ /blog/2012/04/19/adding-custom-theme-templates-drupal-7; - rewrite ^/articles/2012/05/23/add-date-popup-calendar-custom-form$ /blog/2012/05/23/add-date-popup-calendar-custom-form; - rewrite ^/articles/2012/05/23/checkout-specific-revision-svn-command-line$ /blog/2012/05/23/checkout-specific-revision-svn-command-line; - rewrite ^/articles/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess; - rewrite ^/articles/2012/05/23/prevent-apache-displaying-text-files-within-web-browser$ /blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser; - rewrite ^/articles/2012/05/23/writing-info-file-drupal-7-theme$ /blog/2012/05/23/writing-info-file-drupal-7-theme; - rewrite ^/articles/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files; - rewrite ^/articles/2012/07/12/my-new-drupal-modules$ /blog/2012/07/12/my-new-drupal-modules; - rewrite ^/articles/2012/07/14/install-nomensa-media-player-drupal$ /blog/2012/07/14/install-nomensa-media-player-drupal; - rewrite ^/articles/2012/07/27/writing-article-linux-journal$ /blog/2012/07/27/writing-article-linux-journal; - rewrite ^/articles/2012/08/18/display-custom-menu-drupal-7-theme-template-file$ /blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file; - rewrite ^/articles/2012/09/06/reflections-speaking-unifieddiff$ /blog/2012/09/06/reflections-speaking-unifieddiff; - rewrite ^/articles/2012/10/25/my-sublime-text-2-settings$ /blog/2012/10/25/my-sublime-text-2-settings; - rewrite ^/articles/2012/11/15/accessible-bristol-site-launched$ /blog/2012/11/15/accessible-bristol-site-launched; - rewrite ^/articles/2012/11/17/open-sublime-text-2-mac-os-x-command-line$ /blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line; - rewrite ^/articles/2012/12/06/use-sass-and-compass-drupal-7-using-sassy$ /blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy; - rewrite ^/articles/2013/01/09/checking-if-user-logged-drupal-right-way$ /blog/2013/01/09/checking-if-user-logged-drupal-right-way; - rewrite ^/articles/2013/02/16/creating-and-using-custom-tokens-drupal-7$ /blog/2013/02/16/creating-and-using-custom-tokens-drupal-7; - rewrite ^/articles/2013/03/02/quickest-way-install-sublime-text-2-ubuntu$ /blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu; - rewrite ^/articles/2013/04/20/leaving-nomensa-joining-precedent$ /blog/2013/04/20/leaving-nomensa-joining-precedent; - rewrite ^/articles/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt$ /blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt; - rewrite ^/articles/2013/06/13/some-useful-links-using-simpletest-drupal$ /blog/2013/06/13/some-useful-links-using-simpletest-drupal; - rewrite ^/articles/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled; - rewrite ^/articles/2013/07/26/going-drupalcon$ /blog/2013/07/26/going-drupalcon; - rewrite ^/articles/2013/09/06/create-a-zen-sub-theme-using-drush$ /blog/2013/09/06/create-a-zen-sub-theme-using-drush; - rewrite ^/articles/2013/11/19/dont-bootstrap-drupal-use-drush$ /blog/2013/11/19/dont-bootstrap-drupal-use-drush; - rewrite ^/articles/2013/11/27/useful-vagrant-commands$ /blog/2013/11/27/useful-vagrant-commands; - rewrite ^/articles/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget; - rewrite ^/articles/2013/12/31/download-different-versions-drupal-drush$ /blog/2013/12/31/download-different-versions-drupal-drush; - rewrite ^/articles/2013/12/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-curl-or-wget; - rewrite ^/articles/2014/01/15/some-useful-git-aliases$ /blog/2014/01/15/some-useful-git-aliases; - rewrite ^/articles/2014/02/09/drupalcamp-london-2014$ /blog/2014/02/09/drupalcamp-london-2014; - rewrite ^/articles/2014/03/03/what-git-flow$ /blog/2014/03/03/what-git-flow; - rewrite ^/articles/2014/05/03/drupal-association$ /blog/2014/05/03/drupal-association; - rewrite ^/articles/2014/05/06/thanks$ /blog/2014/05/06/thanks; - rewrite ^/articles/2014/05/21/git-format-patch$ /blog/2014/05/21/git-format-patch; - rewrite ^/articles/2014/07/02/drush-make-drupalbristol$ /blog/2014/07/02/drush-make-drupalbristol; - rewrite ^/articles/2014/10/06/fix-vagrant-loading-wrong-virtual-machine$ /blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine; - rewrite ^/articles/2014/10/21/updating-features-and-adding-components-using-drush$ /blog/2014/10/21/updating-features-and-adding-components-using-drush; - rewrite ^/articles/2014/11/18/include-css-fonts-using-sass-each-loop$ /blog/2014/11/18/include-css-fonts-using-sass-each-loop; - rewrite ^/articles/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module; - rewrite ^/articles/2014/11/27/pantheon-settings-files$ /blog/2014/11/27/pantheon-settings-files; - rewrite ^/articles/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides; - rewrite ^/articles/2015/04/03/how-to-define-a-minimum-drupal-core-version$ /blog/2015/04/03/how-to-define-a-minimum-drupal-core-version; - rewrite ^/articles/2015/06/18/updating-forked-repositories-on-github$ /blog/2015/06/18/updating-forked-repositories-on-github; - rewrite ^/articles/2015/07/19/sculpin-twig-resources$ /blog/2015/07/19/sculpin-twig-resources; - rewrite ^/articles/2015/07/21/automating-sculpin-jenkins$ /blog/2015/07/21/automating-sculpin-jenkins; - rewrite ^/articles/2015/12/22/programmatically-load-an-entityform-in-drupal-7$ /blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7; - rewrite ^/articles/2016/02/15/announcing-the-drupal-vm-generator$ /blog/2016/02/15/announcing-the-drupal-vm-generator; - rewrite ^/articles/2016/05/03/simplifying-drupal-migrations-with-xautoload$ /blog/2016/05/03/simplifying-drupal-migrations-with-xautoload; - rewrite ^/articles/2016/07/15/building-gmail-filters-with-php$ /blog/2016/07/15/building-gmail-filters-with-php; - rewrite ^/articles/2016/12/30/drupal-vm-generator-291-released$ /blog/2016/12/30/drupal-vm-generator-291-released; - rewrite ^/articles/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts; - rewrite ^/articles/2017/01/31/nginx-redirects-with-query-string-arguments$ /blog/2017/01/31/nginx-redirects-with-query-string-arguments; - rewrite ^/articles/2017/05/05/fixing-drupal-simpletest-docker$ /blog/2017/05/05/fixing-drupal-simpletest-docker; - rewrite ^/articles/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers; - rewrite ^/articles/2017/05/20/turning-drupal-module-into-feature$ /blog/turning-your-custom-drupal-module-feature; - rewrite ^/articles/2017/06/09/introducing-the-drupal-meetups-twitterbot$ /blog/2017/06/09/introducing-the-drupal-meetups-twitterbot; - rewrite ^/articles/2017/11/07/tdd-test-driven-drupal$ /blog/2017/11/07/tdd-test-driven-drupal; - rewrite ^/articles/2017/11/07/writing-drupal-module-test-driven-development-tdd$ /blog/2017/11/07/writing-drupal-module-test-driven-development-tdd; - rewrite ^/articles/2018/01/30/drupalcamp-bristol-2018$ /blog/2018/01/30/drupalcamp-bristol-2018; - rewrite ^/articles/2018/02/05/using-tailwind-css-in-your-drupal-theme$ /blog/2018/02/05/using-tailwind-css-in-your-drupal-theme; - rewrite ^/articles/2018/02/27/looking-forward-to-drupalcamp-london$ /blog/2018/02/27/looking-forward-to-drupalcamp-london; - rewrite ^/articles/2018/02/27/queuing-private-messages-in-drupal-8$ /blog/2018/02/27/queuing-private-messages-in-drupal-8; - rewrite ^/articles/2018/02/28/building-the-new-phpsw-website$ /blog/2018/02/28/building-the-new-phpsw-website; - rewrite ^/articles/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back; - rewrite ^/articles/2018/03/04/tweets-from-drupalcamp-london$ /blog/2018/03/04/tweets-from-drupalcamp-london; - rewrite ^/articles/2018/05/06/creating-a-custom-phpunit-command-for-docksal$ /blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal; - rewrite ^/articles/accessible-bristol-site-launched$ /blog/accessible-bristol-site-launched; - rewrite ^/articles/add-date-popup-calendar-custom-form$ /blog/add-date-popup-calendar-custom-form; - rewrite ^/articles/add-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; - rewrite ^/articles/adding-custom-theme-templates-drupal-7$ /blog/adding-custom-theme-templates-drupal-7; - rewrite ^/articles/announcing-the-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; - rewrite ^/articles/automating-sculpin-jenkins$ /blog/automating-sculpin-jenkins; - rewrite ^/articles/building-gmail-filters-with-php$ /blog/building-gmail-filters-with-php; - rewrite ^/articles/building-the-new-phpsw-website$ /blog/building-the-new-phpsw-website; - rewrite ^/articles/change-content-type-multiple-nodes-using-sql$ /blog/change-content-type-multiple-nodes-using-sql; - rewrite ^/articles/checking-if-user-logged-drupal-right-way$ /blog/checking-if-user-logged-drupal-right-way; - rewrite ^/articles/checkout-specific-revision-svn-command-line$ /blog/checkout-specific-revision-svn-command-line; - rewrite ^/articles/conditional-email-addresses-webform$ /blog/conditional-email-addresses-webform; - rewrite ^/articles/create-a-zen-sub-theme-using-drush$ /blog/create-a-zen-sub-theme-using-drush; - rewrite ^/articles/create-and-apply-patches$ /blog/create-and-apply-patches; - rewrite ^/articles/create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; - rewrite ^/articles/create-better-photo-gallery-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; - rewrite ^/articles/create-better-photo-gallery-drupal-part-21$ /blog/create-better-photo-gallery-drupal-part-21; - rewrite ^/articles/create-better-photo-gallery-drupal-part-3$ /blog/create-better-photo-gallery-drupal-part-3; - rewrite ^/articles/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-and-nodequeue; - rewrite ^/articles/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-and-views; - rewrite ^/articles/create-multigroups-drupal-7-using-field-collections$ /blog/create-multigroups-drupal-7-using-field-collections; - rewrite ^/articles/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; - rewrite ^/articles/create-slideshow-multiple-images-using-fancy-slide$ /blog/create-slideshow-multiple-images-using-fancy-slide; - rewrite ^/articles/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; - rewrite ^/articles/creating-a-custom-phpunit-command-for-docksal$ /blog/creating-a-custom-phpunit-command-for-docksal; - rewrite ^/articles/creating-and-using-custom-tokens-drupal-7$ /blog/creating-and-using-custom-tokens-drupal-7; - rewrite ^/articles/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/creating-local-and-staging-sites-drupals-domain-module-enabled; - rewrite ^/articles/display-custom-menu-drupal-7-theme-template-file$ /blog/display-custom-menu-drupal-7-theme-template-file; - rewrite ^/articles/display-git-branch-or-tag-names-your-bash-prompt$ /blog/display-git-branch-or-tag-names-your-bash-prompt; - rewrite ^/articles/display-number-facebook-fans-php$ /blog/display-number-facebook-fans-php; - rewrite ^/articles/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; - rewrite ^/articles/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; - rewrite ^/articles/download-different-versions-drupal-drush$ /blog/download-different-versions-drupal-drush; - rewrite ^/articles/drupal-association$ /blog/drupal-association; - rewrite ^/articles/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-291-released; - rewrite ^/articles/drupalcamp-bristol-2018$ /blog/drupalcamp-bristol-2018; - rewrite ^/articles/drupalcamp-london-2014$ /blog/drupalcamp-london-2014; - rewrite ^/articles/drush-make-drupalbristol$ /blog/drush-make-drupalbristol; - rewrite ^/articles/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-with-composer-and-npm-scripts; - rewrite ^/articles/easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; - rewrite ^/articles/fix-vagrant-loading-wrong-virtual-machine$ /blog/fix-vagrant-loading-wrong-virtual-machine; - rewrite ^/articles/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; - rewrite ^/articles/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/forward-one-domain-another-using-mod-rewrite-and-htaccess; - rewrite ^/articles/git-format-patch$ /blog/git-format-patch; - rewrite ^/articles/going-drupalcon$ /blog/going-drupalcon; - rewrite ^/articles/how-to-define-a-minimum-drupal-core-version$ /blog/how-to-define-a-minimum-drupal-core-version; - rewrite ^/articles/imagefield-import-archive$ /blog/imagefield-import-archive; - rewrite ^/articles/improve-jpg-quality-imagecache-and-imageapi$ /blog/improve-jpg-quality-imagecache-and-imageapi; - rewrite ^/articles/include-css-fonts-using-sass-each-loop$ /blog/include-css-fonts-using-sass-each-loop; - rewrite ^/articles/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; - rewrite ^/articles/install-and-configure-subversion-svn-server-ubuntu$ /blog/install-and-configure-subversion-svn-server-ubuntu; - rewrite ^/articles/install-nomensa-media-player-drupal$ /blog/install-nomensa-media-player-drupal; - rewrite ^/articles/installing-nagios-centos$ /blog/installing-nagios-centos; - rewrite ^/articles/introducing-the-drupal-meetups-twitterbot$ /blog/introducing-the-drupal-meetups-twitterbot; - rewrite ^/articles/leaving-nomensa-joining-precedent$ /blog/leaving-nomensa-joining-precedent; - rewrite ^/articles/looking-forward-to-drupalcamp-london$ /blog/looking-forward-to-drupalcamp-london; - rewrite ^/articles/my-new-drupal-modules$ /blog/my-new-drupal-modules; - rewrite ^/articles/my-sublime-text-2-settings$ /blog/my-sublime-text-2-settings; - rewrite ^/articles/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-with-query-string-arguments; - rewrite ^/articles/open-sublime-text-2-mac-os-x-command-line$ /blog/open-sublime-text-2-mac-os-x-command-line; - rewrite ^/articles/pantheon-settings-files$ /blog/pantheon-settings-files; - rewrite ^/articles/prevent-apache-displaying-text-files-within-web-browser$ /blog/prevent-apache-displaying-text-files-within-web-browser; - rewrite ^/articles/proctor-stevenson$ /blog/proctor-stevenson; - rewrite ^/articles/proctors-hosting-next-drupal-meetup$ /blog/proctors-hosting-next-drupal-meetup; - rewrite ^/articles/programmatically-load-an-entityform-in-drupal-7$ /blog/programmatically-load-an-entityform-in-drupal-7; - rewrite ^/articles/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-in-drupal-8; - rewrite ^/articles/quickest-way-install-sublime-text-2-ubuntu$ /blog/quickest-way-install-sublime-text-2-ubuntu; - rewrite ^/articles/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-and-curl-or-wget; - rewrite ^/articles/quickly-create-zen-subthemes-using-zenophile$ /blog/quickly-create-zen-subthemes-using-zenophile; - rewrite ^/articles/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; - rewrite ^/articles/rebuilding-bartik-with-vuejs-tailwind-css$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css; - rewrite ^/articles/reflections-speaking-unifieddiff$ /blog/reflections-speaking-unifieddiff; - rewrite ^/articles/review-adminhover-module$ /blog/review-adminhover-module; - rewrite ^/articles/review-image-caption-module$ /blog/review-image-caption-module; - rewrite ^/articles/review-teleport-module$ /blog/review-teleport-module; - rewrite ^/articles/sculpin-twig-resources$ /blog/sculpin-twig-resources; - rewrite ^/articles/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-with-xautoload; - rewrite ^/articles/site-upgraded-drupal-7$ /blog/site-upgraded-drupal-7; - rewrite ^/articles/some-useful-git-aliases$ /blog/some-useful-git-aliases; - rewrite ^/articles/some-useful-links-using-simpletest-drupal$ /blog/some-useful-links-using-simpletest-drupal; - rewrite ^/articles/south-wales-drupal-user-group$ /blog/south-wales-drupal-user-group; - rewrite ^/articles/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery; - rewrite ^/articles/tdd-test-driven-drupal$ /blog/tdd-test-driven-drupal; - rewrite ^/articles/testing-tailwindcss-plugins-with-jest/?$ /blog/testing-tailwind-css-plugins-jest; - rewrite ^/articles/thanks$ /blog/thanks; - rewrite ^/articles/tweets-from-drupalcamp-london$ /blog/tweets-from-drupalcamp-london; - rewrite ^/articles/updating-features-and-adding-components-using-drush$ /blog/updating-features-and-adding-components-using-drush; - rewrite ^/articles/updating-forked-repositories-on-github$ /blog/updating-forked-repositories-on-github; - rewrite ^/articles/use-authorized-keys-create-passwordless-ssh-connection$ /blog/use-authorized-keys-create-passwordless-ssh-connection; - rewrite ^/articles/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-and-replace-coda-or-textmate; - rewrite ^/articles/use-sass-and-compass-drupal-7-using-sassy$ /blog/use-sass-and-compass-drupal-7-using-sassy; - rewrite ^/articles/useful-vagrant-commands$ /blog/useful-vagrant-commands; - rewrite ^/articles/using-imagecache-and-imagecrop-my-portfolio$ /blog/using-imagecache-and-imagecrop-my-portfolio; - rewrite ^/articles/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-stage-file-proxy-module; - rewrite ^/articles/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module; - rewrite ^/articles/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-your-drupal-theme; - rewrite ^/articles/what-git-flow$ /blog/what-git-flow; - rewrite ^/articles/writing-article-linux-journal$ /blog/writing-article-linux-journal; - rewrite ^/articles/writing-info-file-drupal-7-theme$ /blog/writing-info-file-drupal-7-theme; - rewrite ^/articles/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-mediacurrent-contrib-half-hour-back; - rewrite ^/articles/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-the-mediacurrent-contrib-half-hour-is-back; - rewrite ^/atNOQ$ https://youtu.be/r41dkD2EOo8; - rewrite ^/automatically-updating-talk-created-date$ https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6; - rewrite ^/blog.xml$ /rss.xml last; - rewrite ^/blog/10-useful-drupal-6-modules$ /blog/useful-drupal-6-modules; - rewrite ^/blog/10-years-working-full-time-drupal$ /blog/10-years-working-full-time-drupal-php; - rewrite ^/blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery; - rewrite ^/blog/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; - rewrite ^/blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio$ /blog/using-imagecache-and-imagecrop-my-portfolio; - rewrite ^/blog/2010/05/06/conditional-email-addresses-webform$ /blog/conditional-email-addresses-webform; - rewrite ^/blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile$ /blog/quickly-create-zen-subthemes-using-zenophile; - rewrite ^/blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide$ /blog/create-slideshow-multiple-images-using-fancy-slide; - rewrite ^/blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module$ /blog/quickly-import-multiples-images-using-imagefieldimport-module; - rewrite ^/blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi$ /blog/improve-jpg-quality-imagecache-and-imageapi; - rewrite ^/blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue$ /blog/create-block-social-media-icons-using-cck-views-and-nodequeue; - rewrite ^/blog/2010/06/25/10-useful-drupal-6-modules$ /blog/10-useful-drupal-6-modules; - rewrite ^/blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-and-views; - rewrite ^/blog/2010/07/01/change-content-type-multiple-nodes-using-sql$ /blog/change-content-type-multiple-nodes-using-sql; - rewrite ^/blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx; - rewrite ^/blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; - rewrite ^/blog/2010/07/07/quickly-adding-taxonomy-term-multiple-nodes-using-sql$ /blog/add-taxonomy-term-multiple-nodes-using-sql; - rewrite ^/blog/2010/07/12/overview-teleport-module$ /blog/review-teleport-module; - rewrite ^/blog/2010/07/12/review-teleport-module$ /blog/review-teleport-module; - rewrite ^/blog/2010/08/10/review-adminhover-module$ /blog/review-adminhover-module; - rewrite ^/blog/2010/08/11/create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; - rewrite ^/blog/2010/08/11/how-create-better-photo-gallery-drupal-part-1$ /blog/create-better-photo-gallery-drupal-part-1; - rewrite ^/blog/2010/08/17/create-better-photo-gallery-drupal-part-2$ /blog/create-better-photo-gallery-drupal-part-2; - rewrite ^/blog/2010/08/20/review-image-caption-module$ /blog/review-image-caption-module; - rewrite ^/blog/2010/09/26/south-wales-drupal-user-group$ /blog/south-wales-drupal-user-group; - rewrite ^/blog/2010/10/10/create-and-apply-patches$ /blog/create-and-apply-patches; - rewrite ^/blog/2010/10/13/create-better-photo-gallery-drupal-part-3$ /blog/create-better-photo-gallery-drupal-part-3; - rewrite ^/blog/2010/10/22/create-better-photo-gallery-drupal-part-21$ /blog/create-better-photo-gallery-drupal-part-21; - rewrite ^/blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-and-replace-coda-or-textmate; - rewrite ^/blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; - rewrite ^/blog/2011/03/15/display-number-facebook-fans-php$ /blog/display-number-facebook-fans-php; - rewrite ^/blog/2011/03/31/proctor-stevenson$ /blog/proctor-stevenson; - rewrite ^/blog/2011/05/20/proctors-hosting-next-drupal-meetup$ /blog/proctors-hosting-next-drupal-meetup; - rewrite ^/blog/2011/05/23/imagefield-import-archive$ /blog/imagefield-import-archive; - rewrite ^/blog/2011/08/28/create-multigroups-drupal-7-using-field-collections$ /blog/create-multigroups-drupal-7-using-field-collections; - rewrite ^/blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu$ /blog/install-and-configure-subversion-svn-server-ubuntu; - rewrite ^/blog/2012/01/04/site-upgraded-drupal-7$ /blog/site-upgraded-drupal-7; - rewrite ^/blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection$ /blog/use-authorized-keys-create-passwordless-ssh-connection; - rewrite ^/blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush$ /blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush; - rewrite ^/blog/2012/04/17/installing-nagios-centos$ /blog/installing-nagios-centos; - rewrite ^/blog/2012/04/19/adding-custom-theme-templates-drupal-7$ /blog/adding-custom-theme-templates-drupal-7; - rewrite ^/blog/2012/05/23/add-date-popup-calendar-custom-form$ /blog/add-date-popup-calendar-custom-form; - rewrite ^/blog/2012/05/23/checkout-specific-revision-svn-command-line$ /blog/checkout-specific-revision-svn-command-line; - rewrite ^/blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess$ /blog/forward-one-domain-another-using-mod-rewrite-and-htaccess; - rewrite ^/blog/2012/05/23/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; - rewrite ^/blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser$ /blog/prevent-apache-displaying-text-files-within-web-browser; - rewrite ^/blog/2012/05/23/writing-info-file-drupal-7-theme$ /blog/writing-info-file-drupal-7-theme; - rewrite ^/blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; - rewrite ^/blog/2012/05/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; - rewrite ^/blog/2012/07/12/my-new-drupal-modules$ /blog/my-new-drupal-modules; - rewrite ^/blog/2012/07/14/install-nomensa-media-player-drupal$ /blog/install-nomensa-media-player-drupal; - rewrite ^/blog/2012/07/27/writing-article-linux-journal$ /blog/writing-article-linux-journal; - rewrite ^/blog/2012/07/install-and-configure-nomensa-accessible-media-player-drupal$ /blog/install-configure-nomensa-accessible-media-player-drupal; - rewrite ^/blog/2012/07/nomensa-accessible-media-player-drupal$ /blog/install-configure-nomensa-accessible-media-player-drupal; - rewrite ^/blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file$ /blog/display-custom-menu-drupal-7-theme-template-file; - rewrite ^/blog/2012/09/06/reflections-speaking-unifieddiff$ /blog/reflections-speaking-unifieddiff; - rewrite ^/blog/2012/10/25/my-sublime-text-2-settings$ /blog/my-sublime-text-2-settings; - rewrite ^/blog/2012/11/15/accessible-bristol-site-launched$ /blog/accessible-bristol-site-launched; - rewrite ^/blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line$ /blog/open-sublime-text-2-mac-os-x-command-line; - rewrite ^/blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy$ /blog/use-sass-and-compass-drupal-7-using-sassy; - rewrite ^/blog/2013/01/09/checking-if-user-logged-drupal-right-way$ /blog/checking-if-user-logged-drupal-right-way; - rewrite ^/blog/2013/02/16/creating-and-using-custom-tokens-drupal-7$ /blog/creating-and-using-custom-tokens-drupal-7; - rewrite ^/blog/2013/02/creating-and-using-custom-tokens-drupal-7$ /blog/creating-using-custom-tokens-drupal-7; - rewrite ^/blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu$ /blog/quickest-way-install-sublime-text-2-ubuntu; - rewrite ^/blog/2013/04/20/leaving-nomensa-joining-precedent$ /blog/leaving-nomensa-joining-precedent; - rewrite ^/blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt$ /blog/display-git-branch-or-tag-names-your-bash-prompt; - rewrite ^/blog/2013/06/13/some-useful-links-using-simpletest-drupal$ /blog/some-useful-links-using-simpletest-drupal; - rewrite ^/blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled$ /blog/creating-local-and-staging-sites-drupals-domain-module-enabled; - rewrite ^/blog/2013/07/26/going-drupalcon$ /blog/going-drupalcon; - rewrite ^/blog/2013/09/06/create-a-zen-sub-theme-using-drush$ /blog/create-a-zen-sub-theme-using-drush; - rewrite ^/blog/2013/09/create-zen-sub-theme-using-drush$ /blog/create-zen-sub-theme-using-drush; - rewrite ^/blog/2013/11/19/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; - rewrite ^/blog/2013/11/27/useful-vagrant-commands$ /blog/useful-vagrant-commands; - rewrite ^/blog/2013/11/dont-bootstrap-drupal-use-drush$ /blog/dont-bootstrap-drupal-use-drush; - rewrite ^/blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget$ /blog/quickly-apply-patches-using-git-and-curl-or-wget; - rewrite ^/blog/2013/12/31/download-different-versions-drupal-drush$ /blog/download-different-versions-drupal-drush; - rewrite ^/blog/2014/01/15/some-useful-git-aliases$ /blog/some-useful-git-aliases; - rewrite ^/blog/2014/02/09/drupalcamp-london-2014$ /blog/drupalcamp-london-2014; - rewrite ^/blog/2014/03/03/what-git-flow$ /blog/what-git-flow; - rewrite ^/blog/2014/05/03/drupal-association$ /blog/drupal-association; - rewrite ^/blog/2014/05/06/thanks$ /blog/thanks; - rewrite ^/blog/2014/05/21/git-format-patch$ /blog/git-format-patch; - rewrite ^/blog/2014/07/02/drush-make-drupalbristol$ /blog/drush-make-drupalbristol; - rewrite ^/blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine$ /blog/fix-vagrant-loading-wrong-virtual-machine; - rewrite ^/blog/2014/10/21/updating-features-and-adding-components-using-drush$ /blog/updating-features-and-adding-components-using-drush; - rewrite ^/blog/2014/11/18/include-css-fonts-using-sass-each-loop$ /blog/include-css-fonts-using-sass-each-loop; - rewrite ^/blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module$ /blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module; - rewrite ^/blog/2014/11/27/pantheon-settings-files$ /blog/pantheon-settings-files; - rewrite ^/blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; - rewrite ^/blog/2015/04/03/how-to-define-a-minimum-drupal-core-version$ /blog/how-to-define-a-minimum-drupal-core-version; - rewrite ^/blog/2015/06/18/updating-forked-repositories-on-github$ /blog/updating-forked-repositories-on-github; - rewrite ^/blog/2015/07/19/sculpin-twig-resources$ /blog/sculpin-twig-resources; - rewrite ^/blog/2015/07/21/automating-sculpin-jenkins$ /blog/automating-sculpin-jenkins; - rewrite ^/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7$ /blog/programmatically-load-an-entityform-in-drupal-7; - rewrite ^/blog/2016/02/15/announcing-the-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; - rewrite ^/blog/2016/05/03/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-with-xautoload; - rewrite ^/blog/2016/07/15/building-gmail-filters-with-php$ /blog/building-gmail-filters-with-php; - rewrite ^/blog/2016/12/30/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-291-released; - rewrite ^/blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-with-composer-and-npm-scripts; - rewrite ^/blog/2017/01/31/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-with-query-string-arguments; - rewrite ^/blog/2017/05/05/fixing-drupal-simpletest-docker$ /blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers; - rewrite ^/blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; - rewrite ^/blog/2017/05/20/turning-drupal-module-into-feature$ /blog/turning-your-custom-drupal-module-feature; - rewrite ^/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot$ /blog/introducing-the-drupal-meetups-twitterbot; - rewrite ^/blog/2017/07/13/publishing-sculpin-sites-with-github-pages$ /blog/publishing-sculpin-sites-github-pages; - rewrite ^/blog/2017/11/07/tdd-test-driven-drupal$ /blog/tdd-test-driven-drupal; - rewrite ^/blog/2017/11/07/writing-drupal-module-test-driven-development-tdd$ /blog/2017/11/07/tdd-test-driven-drupal; - rewrite ^/blog/2018/01/30/drupalcamp-bristol-2018$ /blog/drupalcamp-bristol-2018; - rewrite ^/blog/2018/02/05/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-in-your-drupal-theme; - rewrite ^/blog/2018/02/27/looking-forward-to-drupalcamp-london$ /blog/looking-forward-to-drupalcamp-london; - rewrite ^/blog/2018/02/27/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-in-drupal-8; - rewrite ^/blog/2018/02/28/building-the-new-phpsw-website$ /blog/building-the-new-phpsw-website; - rewrite ^/blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back$ /blog/yay-the-mediacurrent-contrib-half-hour-is-back; - rewrite ^/blog/2018/03/04/tweets-from-drupalcamp-london$ /blog/tweets-from-drupalcamp-london; - rewrite ^/blog/2018/04/23/back-to-the-future-git-diff-apply$ /blog/back-future-gits-diff-apply-commands; - rewrite ^/blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal$ /blog/creating-a-custom-phpunit-command-for-docksal; - rewrite ^/blog/add-date-popup-calendar-custom-form$ /blog/how-add-date-popup-calendar-custom-form; - rewrite ^/blog/adding-methods-decorating-entity-metadata-wrapper$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods; - rewrite ^/blog/announcing-drupal-vm-generator$ /blog/announcing-the-drupal-vm-generator; - rewrite ^/blog/announcing-the-drupal-vm-config-generator$ /blog/announcing-the-drupal-vm-generator; - rewrite ^/blog/back-to-the-future-git-diff-apply$ /blog/back-future-gits-diff-apply-commands; - rewrite ^/blog/building-gmail-filters-in-php$ /blog/building-gmail-filters-php; - rewrite ^/blog/building-new-phpsw-website$ /blog/building-the-new-phpsw-website; - rewrite ^/blog/building-presentation-slides-reveal-js-tailwind-css$ /blog/building-presentation-slides-rst2pdf; - rewrite ^/blog/building-speaker-leaderboard-php-south-wales-using-drupal-symfony$ /blog/building-speaker-leaderboard-php-south-wales-drupal-symfony; - rewrite ^/blog/create-and-apply-patches$ /blog/how-create-apply-patches; - rewrite ^/blog/create-flickr-photo-gallery-using-feeds-cck-and-views$ /blog/create-flickr-photo-gallery-using-feeds-cck-views; - rewrite ^/blog/creating-and-using-custom-tokens-drupal-7$ /blog/creating-using-custom-tokens-drupal-7; - rewrite ^/blog/creating-custom-docksal-commands$ /blog/creating-custom-phpunit-command-docksal; - rewrite ^/blog/debugging-drupal-commerce-promotions-illiminate-collections$ /blog/debugging-drupal-commerce-illuminate-collections; - rewrite ^/blog/decorating-entity-metadata-wrapper-add-add-refactor-methods$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods; - rewrite ^/blog/dev-book-club-refactoring-chapter-1$ /blog/dev-book-club-notes-refactoring-chapter-1; - rewrite ^/blog/dividing-drupals-process-preprocess-functions-separate-files$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files; - rewrite ^/blog/drupal-8-commerce-fixing-no-such-customer-error-checkout$ /blog/drupal-8-commerce-fixing-error-on-user-checkout; - rewrite ^/blog/drupal-8-commerce-fixing-no-such-customer-error-on-checkout$ /blog/drupal-8-commerce-fixing-no-such-customer-error-checkout; - rewrite ^/blog/drupal-vm-generator-291-released$ /blog/drupal-vm-generator-updates; - rewrite ^/blog/drupalcamp-london-2019-tickets$ /blog/drupalcamp-london-2019-tickets-available-call-sessions; - rewrite ^/blog/drush-make-drupalbristol$ /talks/drush-make-drupalbristol; - rewrite ^/blog/easier-git-repository-cloning-with-insteadof$ /blog/easier-git-repository-cloning-insteadof; - rewrite ^/blog/easier-sculpin-commands-with-composer-and-npm-scripts$ /blog/easier-sculpin-commands-composer-npm-scripts; - rewrite ^/blog/editing-meetup-videos-kdenlive$ /blog/editing-meetup-videos-linux-kdenlive; - rewrite ^/blog/examples-of-laravel-collections-in-drupal$ /blog/using-laravel-collections-drupal; - rewrite ^/blog/experimenting-with-events-in-drupal-8$ /blog/experimenting-events-drupal-8; - rewrite ^/blog/fix-vagrant-loading-wrong-virtual-machine$ /blog/how-fix-vagrant-loading-wrong-virtual-machine; - rewrite ^/blog/fixing-drupal-simpletest-docker$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers; - rewrite ^/blog/forward-one-domain-another-using-modrewrite-and-htaccess$ /blog/forward-one-domain-another-using-modrewrite-htaccess; - rewrite ^/blog/git-format-patch$ /blog/git-format-patch-your-friend; - rewrite ^/blog/how-easily-embed-typekit-fonts-your-drupal-website$ /blog/easily-embed-typekit-fonts-your-drupal-website; - rewrite ^/blog/how-split-new-drupal-contrib-project-within-another-repository$ /blog/splitting-new-drupal-project-from-repo; - rewrite ^/blog/how-style-drupal-6s-taxonomy-lists-php-css-and-jquery$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery; - rewrite ^/blog/include-local-drupal-settings-file-environment-configuration-overrides /blog/include-local-drupal-settings-file-environment-configuration-and-overrides; - rewrite ^/blog/install-and-configure-subversion-svn-server-ubuntu$ /blog/how-install-configure-subversion-svn-server-ubuntu; - rewrite ^/blog/live-blogging-symfonylive-london$ /blog/live-blogging-symfonylive-london-2019; - rewrite ^/blog/minimum-core-version$ /blog/how-define-minimum-drupal-core-version; - rewrite ^/blog/nginx-redirects-with-query-string-arguments$ /blog/nginx-redirects-query-string-arguments; - rewrite ^/blog/null-users-and-system-users-in-drupal$ /blog/null-users-system-users-drupal; - rewrite ^/blog/overridding-phpcs-configuration-drupal-ci$ /blog/overriding-phpcs-configuration-drupal-ci; - rewrite ^/blog/pantheon-settings-files$ /blog/include-environment-specific-settings-files-pantheon; - rewrite ^/blog/pdfpc-pdf-presenter-console-notes$ /blog/presenting-pdf-slides-using-pdfpc-pdf-presenter-console; - rewrite ^/blog/php-apps-subdirectory-nginx$ /blog/how-put-your-php-application-subdirectory-another-site-nginx; - rewrite ^/blog/presenting-tailwind-css-ansible-cms-philly$ /blog/presenting-on-tailwind-css-and-ansible-at-cms-philly; - rewrite ^/blog/programmatically-load-an-entityform-in-drupal-7$ /blog/entityform last; - rewrite ^/blog/programmatically-load-entityform-drupal-7$ /blog/entityform last; - rewrite ^/blog/published-my-first-docker-images-docker-hub$ /blog/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf; - rewrite ^/blog/publishing-sculpin-sites-github-pages$ /blog/publishing-sculpin-sites-with-github-pages; - rewrite ^/blog/publishing-sculpin-sites-with-github-pages$ /blog/publishing-sculpin-sites-github-pages; - rewrite ^/blog/queuing-private-messages-in-drupal-8$ /blog/queuing-private-messages-drupal-8; - rewrite ^/blog/quick-project-switching-in-phpstorm$ /blog/quick-project-switching-phpstorm; - rewrite ^/blog/quickly-apply-patches-using-git-and-curl-or-wget/?$ /blog/quickly-apply-patches-using-git-curl-or-wget; - rewrite ^/blog/rebuilding-bartik-with-vuejs-tailwind-css$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css; - rewrite ^/blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2; - rewrite ^/blog/rebuilding-uis-tailwind-css$ /blog/uis-ive-rebuilt-tailwind-css; - rewrite ^/blog/restructuring-my-tailwindjs-config-files$ /blog/restructuring-my-tailwindjs-configuration-files; - rewrite ^/blog/retrieving-profile-data-user-using-entity-metadata-wrapper$ /blog/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper; - rewrite ^/blog/running-drupal-with-symfony-local-server$ /blog/running-drupal-88-symfony-local-server; - rewrite ^/blog/running-phpunit-tests-docksal-phpstorm$ /blog/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm; - rewrite ^/blog/simplifying-drupal-migrations-with-xautoload$ /blog/simplifying-drupal-migrations-xautoload; - rewrite ^/blog/speaking-drupalcon-barcelona-2020$ /blog/speaking-drupalcon-europe-2020; - rewrite ^/blog/speaking-during-lockdown$ /blog/speaking-remotely-during-covid-19; - rewrite ^/blog/speaking-remotely-during-lockdown$ /blog/speaking-remotely-during-covid-19; - rewrite ^/blog/survey-results-my-drupalcon-europe-session$ /blog/survey-results-my-drupalcon-europe-session-test-driven-drupal; - rewrite ^/blog/system-users-null-users$ /blog/null-users-and-system-users-in-drupal; - rewrite ^/blog/test-driven-drupal-gitstore-leanpub$ /blog/test-driven-drupal-on-gitstore-leanpub; - rewrite ^/blog/test-driven-drupal-presentation-drupalcon-europe-0$ /blog/test-driven-drupal-presentation-drupalcon-europe; - rewrite ^/blog/test-driven-drupal-session-drupalcon-europe$ /blog/test-driven-drupal-presentation-drupalcon-europe; - rewrite ^/blog/test-driven-drupal-session-video-drupalcon-europe$ /blog/test-driven-drupal-presentation-drupalcon-europe; - rewrite ^/blog/testing-tailwind-css-plugins-with-jest$ /blog/testing-tailwind-css-plugins-jest; - rewrite ^/blog/tweets-from-drupalcamp-london$ /blog/tweets-drupalcamp-london; - rewrite ^/blog/updating-features-and-adding-components-using-drush$ /blog/updating-features-adding-components-using-drush; - rewrite ^/blog/updating-forked-repositories-github$ /blog/updating-forked-github-repos; - rewrite ^/blog/use-regular-expressions-search-and-replace-coda-or-textmate$ /blog/use-regular-expressions-search-replace-coda-or-textmate; - rewrite ^/blog/using-environment-variables-settings-docksal$ /blog/how-use-environment-variables-your-drupal-settings-docksal; - rewrite ^/blog/using-psr-4-autoloading-your-drupal-7-test-cases$ /blog/psr4-autoloading-test-cases-drupal-7; - rewrite ^/blog/using-tailwind-css-in-your-drupal-theme$ /blog/using-tailwind-css-your-drupal-theme; - rewrite ^/blog/using-the-pcss-extension-postcss-webpack-encore$ /blog/using-pcss-extension-postcss-webpack-encore; - rewrite ^/blog/weeknotes-june-5th$ /blog/weeknotes-2021-06-05; - rewrite ^/blog/writing-drupal-module-test-driven-development-tdd$ /blog/writing-new-drupal-8-module-using-test-driven-development-tdd; - rewrite ^/book$ /test-driven-drupal; - rewrite ^/calendar$ https://savvycal.com/opdavies/chat; - rewrite ^/cms-philly$ /articles/presenting-on-tailwind-css-and-ansible-at-cms-philly; - rewrite ^/code-enigma-interview$ https://blog.codeenigma.com/interview-with-a-drupal-expert-9fcd8e0fad28; - rewrite ^/contrib-half-hour$ https://www.youtube.com/playlist?list=PLu-MxhbnjI9rHroPvZO5LEUhr58Yl0j_F; - rewrite ^/contribution-day$ https://github.com/microserve-io/contribution-day/; - rewrite ^/d0P5z$ /talks/drupal-8-php-libraries-drupalorg-api; - rewrite ^/dcbristol-cfp$ https://www.papercall.io/drupalcamp-bristol-2019; - rewrite ^/dcbristol17-videos$ https://www.youtube.com/playlist?list=PLOwPvExSyLLngtd6R4PUD9MCXa6QL_obA; - rewrite ^/dcbristol19-announced$ /articles/drupalcamp-bristol-2019-speakers-sessions-announced; - rewrite ^/dclondon-sat$ https://drupalcamp.london/schedule/saturday; - rewrite ^/dclondon-sun$ https://drupalcamp.london/schedule/sunday; - rewrite ^/dclondon20$ /articles/drupalcamp-london-testing-workshop; - rewrite ^/ddev-phpunit-command$ /blog/creating-custom-phpunit-command-ddev; - rewrite ^/deploying-php-ansible$ /talks/deploying-php-ansible-ansistrano; - rewrite ^/dks7E$ https://www.youtube.com/watch?v=PLS4ET7FAcU; - rewrite ^/do-library$ https://github.com/opdavies/drupalorg-api-php; - rewrite ^/do-projects$ https://github.com/opdavies/drupal-module-drupalorg-projects; - rewrite ^/docksal-phpunit-phpstorm$ /articles/running-phpunit-tests-docksal-phpstorm; - rewrite ^/docksal-posts$ /articles/tags/docksal; - rewrite ^/dransible$ https://github.com/opdavies/dransible; - rewrite ^/dransible-drupal-9$ /blog/upgrading-dransible-project-drupal-9; - rewrite ^/drupal-bristol-march-19$ https://docs.google.com/presentation/d/1pk9LIN-hHX73kvDdo-lzgmKlAeH33_K_uvI0t7A-rvY/edit?usp=sharing; - rewrite ^/drupal-core-live-stream$ https://www.youtube.com/watch?v=OK4FWwh1gQU; - rewrite ^/drupal-core-testing-gate$ https://www.drupal.org/core/gates#testing; - rewrite ^/drupal-first-time-issues$ https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice; - rewrite ^/drupal-forum-post$ http://www.webmaster-forums.net/webmasters-corner/developing-my-website-using-php-and-mysql#comment-1231537; - rewrite ^/drupal-marketplace-uk$ https://www.drupal.org/drupal-services?offices%5B%5D=24460; - rewrite ^/drupal-meetups-twitterbot$ /articles/introducing-the-drupal-meetups-twitterbot; - rewrite ^/drupal-novice-issues$ https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice; - rewrite ^/drupal-php-developer-consultant-uk$ /drupal-php-developer; - rewrite ^/drupal-tailwind-demo$ https://www.youtube.com/watch?v=1eM-Gw6GI4g; - rewrite ^/drupal-tailwindcss$ https://www.drupal.org/project/tailwindcss; - rewrite ^/drupal-vuejs$ /talks/decoupling-drupal-vuejs/; - rewrite ^/drupalcamp-london-2019-tickets$ /articles/drupalcamp-london-2019-tickets; - rewrite ^/drupalcamp-nyc-training$ https://www.youtube.com/watch?v=3M9c4UUzKm0; - rewrite ^/drupalorg$ https://www.drupal.org/u/opdavies; - rewrite ^/drupalorg-project-issues$ https://www.drupal.org/project/issues/search?projects=Override+Node+Options%2C+Tailwind+CSS+Starter+Kit%2C+Block+ARIA+Landmark+Roles%2C+Copyright+Block+module%2C+System+User%2C+Null+User%2C+Collection+class%2C+Pathauto+Menu+Link%2C+Webform+ARIA&project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&issue_tags_op=%3D; - rewrite ^/drupalversary$ https://github.com/opdavies/drupal-module-drupalversary; - rewrite ^/elewant$ https://elewant.com/shepherd/admire/opdavies; - rewrite ^/feed$ /rss.xml last; - rewrite ^/first-drupal-core-issue$ https://www.drupal.org/project/drupal/issues/753898; - rewrite ^/first-npm-package$ https://www.npmjs.com/package/tailwindcss-vuejs; - rewrite ^/freeagent$ https://opdavies.freeagent.com; - rewrite ^/git-flow$ /talks/git-flow; - rewrite ^/gitlab$ https://gitlab.com/opdavies; - rewrite ^/gitstore$ https://enjoy.gitstore.app/maintainers/opdavies; - rewrite ^/gmail-filters$ https://gitlab.com/opdavies/gmail-filters; - rewrite ^/images/me-precedent.jpg$ /sites/default/files/images/social-avatar.jpg; - rewrite ^/inviqa-tailwind-demo$ https://play.tailwindcss.com/Yfmw8O5UNN; - rewrite ^/inviqa-tailwind-notes$ https://gist.github.com/opdavies/e6f0f4938506a6859acf1aca8b4e1a74; - rewrite ^/join-php-south-wales-slack$ https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA; - rewrite ^/jy6rW$ https://www.meetup.com/PHP-South-Wales/events/264731393; - rewrite ^/kB6Jd$ /articles/running-drupal-with-symfony-local-server/; - rewrite ^/kmDRA$ https://www.bbc.co.uk/news/uk-46561779; - rewrite ^/leeds-php-drupal-9$ https://www.meetup.com/leedsphp/events/272504993; - rewrite ^/links$ /; - rewrite ^/london-half-term-map$ https://www.google.com/maps/d/u/0/viewer?mid=1d-7ruqjlm2vKF_Fwhu_-5CDfr2TyUuhB&hl=en&ll=51.50411420613797%2C-0.12409831347656564&z=13; - rewrite ^/luke-dinosaurs$ https://luke-dinosaurs.netlify.com/; - rewrite ^/luke-recycling$ https://luke-recycling.netlify.com/; - rewrite ^/microserve-issues$ https://www.drupal.org/project/issues/search?status[]=Open&issue_tags=Microserve; - rewrite ^/microserve-issues-need-review$ https://www.drupal.org/project/issues/search?projects=&project_issue_followers=&status%5B%5D=8&issue_tags_op=%3D&issue_tags=Microserve; - rewrite ^/npm$ https://www.npmjs.com/~opdavies; - rewrite ^/oFlkS$ /articles/test-driven-drupal-on-gitstore-leanpub; - rewrite ^/oliver-davies-uk-based-drupal-symfony-developer$ /oliver-davies-uk-based-drupal-php-developer; - rewrite ^/photo-lab-fun-family-portraits$ https://www.apple.com/uk/today/event/photo-lab-fun-family-portraits/6512343695143329889; - rewrite ^/php-ansible$ /talks/deploying-php-ansible-ansistrano; - rewrite ^/php-south-wales-sept-19$ https://joind.in/event/php-south-wales---september-2019-double-docker; - rewrite ^/php-south-wales-slack-invite$ https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA; - rewrite ^/php-south-wales-videos$ https://www.youtube.com/channel/UCzQRSSaIV2Ajvl81BxPQDZA; - rewrite ^/pv176$ https://www.sainsburys.co.uk/shop/gb/groceries/paper---notebooks-44/sainsburys-home-midnight-opulence-a4-floral-notebook-133870966-p; - rewrite ^/qSHAl$ /articles/published-my-first-npm-package/; - rewrite ^/qT1Rb$ https://github.com/opdavies/drupal-meetups-twitterbot; - rewrite ^/rebuilding-acquia$ https://rebuilding-acquia.oliverdavies.uk; - rewrite ^/rebuilding-bartik$ /articles/rebuilding-bartik-with-vuejs-tailwind-css; - rewrite ^/rebuilding-bristol-js$ https://github.com/opdavies/rebuilding-bristol-js; - rewrite ^/rebuilding-pantheon$ https://play.tailwindcss.com/LND98XihGI?layout=horizontal; - rewrite ^/rebuilding-platformsh$ https://rebuilding-platformsh.oliverdavies.uk; - rewrite ^/rebuilding-symfony$ https://github.com/opdavies/rebuilding-symfony; - rewrite ^/rk29B$ https://www.meetup.com/PHP-South-Wales/events/268422525; - rewrite ^/rss$ /rss.xml last; - rewrite ^/ruralelec-slider$ https://www.youtube.com/watch?v=-x80ymicm5E; - rewrite ^/s9MjJ$ https://symfonycasts.com/screencast/symfony; - rewrite ^/sIGnJ$ https://microserve.io; - rewrite ^/sculpin-encore-versioning$ https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2; - rewrite ^/skills$ https://opdavies-skills-tailwindcss.netlify.com/; - rewrite ^/slides-drupal-9$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; - rewrite ^/slides-upgrading-to-drupal-9$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; - rewrite ^/slides-upgrading-to-drupal-9/index.html$ https://slides-upgrading-to-drupal-9.oliverdavies.uk; - rewrite ^/slides-working-with-workspace$ https://slides-working-with-workspace.oliverdavies.uk; - rewrite ^/speaker-info$ /about/speaker-information; - rewrite ^/speaking-videos$ https://www.youtube.com/playlist?list=PLHn41Ay7w7kfAzczswrANch5oHAPZBlvu; - rewrite ^/sprint-day$ https://github.com/microserve-io/contribution-day/; - rewrite ^/sprint-setup$ https://github.com/microserve-io/contribution-day/; - rewrite ^/stream$ https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ/live; - rewrite ^/swap-markdown-parser$ https://github.com/opdavies/sculpin-twig-markdown-bundle-example/tree/swap-markdown-parser; - rewrite ^/symfony$ https://connect.symfony.com/profile/opdavies; - rewrite ^/symfony-server$ /articles/running-drupal-with-symfony-local-server; - rewrite ^/symfonylive$ /articles/live-blogging-symfonylive-london; - rewrite ^/symposium$ https://symposiumapp.com/u/opdavies; - rewrite ^/tailwind-css-talk$ /talks/taking-flight-tailwind-css; - rewrite ^/tailwind-repos$ https://github.com/opdavies?utf8=%E2%9C%93&tab=repositories&q=tailwindcss; - rewrite ^/tailwind-talk$ /talks/taking-flight-with-tailwind-css; - rewrite ^/tailwindcss-demo$ http://tailwindcss-demo.oliverdavies.uk/; - rewrite ^/talks-offer-tweet$ https://twitter.com/opdavies/status/1250870367712935938; - rewrite ^/talks/2012/09/05/what-is-this-drupal-thing-unified-diff$ /talks/what-is-this-drupal-thing; - rewrite ^/talks/2013/07/10/drupal-ldap-swdug$ /talks/drupal-ldap; - rewrite ^/talks/2014/03/01/git-flow-drupalcamp-london-2014$ /talks/git-flow; - rewrite ^/talks/2014/07/02/drush-make-drupalbristol-drupal-bristol$ /talks/drush-make-drupalbristol; - rewrite ^/talks/2014/08/19/drupal-association-swdug$ /talks/drupal-association; - rewrite ^/talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015$ /talks/drupalorg-in-2015-whats-coming-next; - rewrite ^/talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015$ /talks/drupalorg-in-2015-whats-coming-next; - rewrite ^/talks/2015/04/08/drupal-8-phpsw$ /talks/drupal-8; - rewrite ^/talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015$ /talks/test-drive-twig-with-sculpin; - rewrite ^/talks/2015/08/25/dancing-for-drupal-umbristol$ /talks/dancing-for-drupal; - rewrite ^/talks/2015/10/14/sculpin-phpsw$ /talks/sculpin; - rewrite ^/talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016$ /talks/getting-started-with-drupal-8-module-development; - rewrite ^/talks/2016/03/09/drupal-vm-generator-nwdug$ /talks/drupal-vm-generator; - rewrite ^/talks/2016/04/02/drupal-vm-generator-drupal-bristol$ /talks/drupal-vm-generator; - rewrite ^/talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016$ /talks/drupal-8-rejoining-the-herd; - rewrite ^/talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016$ /talks/drupal-vm-meet-symfony-console; - rewrite ^/talks/2016/11/09/drupal-development-with-composer-phpsw$ /talks/drupal-development-with-composer; - rewrite ^/talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol$ /talks/goodbye-drush-make-hello-composer; - rewrite ^/talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol$ /talks/getting-your-data-into-drupal-8; - rewrite ^/talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017$ /talks/getting-your-data-into-drupal-8; - rewrite ^/talks/ansible-ansistrano$ https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano; - rewrite ^/talks/archive$ /talks; - rewrite ^/talks/deploying-php-applications-fabric$ /talks/deploying-php-fabric; - rewrite ^/talks/deploying-php-applications-with-fabric$ /talks/deploying-php-fabric; - rewrite ^/talks/drupal-vm-generator-2$ /talks/drupal-vm-generator; - rewrite ^/talks/drupalorg-2015-2$ /talks/drupalorg-2015; - rewrite ^/talks/drupalorg-in-2015-whats-coming-next$ /talks/drupalorg-2015; - rewrite ^/talks/getting-started-with-drupal-8-module-development$ /drupal-8-module-development; - rewrite ^/talks/having-fun-drupal-8-php-libraries-drupalorg-api$ /talks/drupal-8-php-libraries-drupalorg-api; - rewrite ^/talks/never-commit-master-introduction-git-flow$ /talks/git-flow; - rewrite ^/talks/sculpin$ /talks/building-static-websites-sculpin; - rewrite ^/talks/tailwind$ /talks/taking-flight-with-tailwind-css/; - rewrite ^/talks/using-laravel-collections-outside-laravel/?$ /talks/using-illuminate-collections-outside-laravel; - rewrite ^/talks/working-workspace$ /talks/working-with-workspace; - rewrite ^/tdd-blog$ https://github.com/opdavies/drupal-module-tdd-blog; - rewrite ^/tdd-test-driven-drupal$ /talks/tdd-test-driven-drupal/; - rewrite ^/test-driven-drupal-book$ /test-driven-drupal; - rewrite ^/testing-drupal$ https://www.oliverdavies.uk/talks/tdd-test-driven-drupal; - rewrite ^/testing-drupal-intro$ https://inviqa.com/blog/drupal-automated-testing-introduction; - rewrite ^/testing-tailwind-plugins$ /articles/testing-tailwindcss-plugins-with-jest; - rewrite ^/testing-workshop$ https://github.com/opdavies/workshop-drupal-automated-testing; - rewrite ^/testing-workshop-code$ https://github.com/opdavies/workshop-drupal-automated-testing-code; - rewrite ^/todoist-filters$ https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2; - rewrite ^/twitter-tweaks$ https://github.com/opdavies/chrome-extension-twitter-tweaks; - rewrite ^/upgrading-to-drupal-9$ /talks/upgrading-your-site-drupal-9; - rewrite ^/uxbjV$ https://www.drupal.org/project/copyright_block; - rewrite ^/vyTEF$ https://www.npmjs.com/package/tailwindcss-vuejs; - rewrite ^/webpack-encore-pcss-regex$ https://regexr.com/51iaf; - rewrite ^/wordcamp-bristol-tailwindcss$ https://2019.bristol.wordcamp.org/session/taking-flight-with-tailwind-css; - rewrite ^/wordpress-tailwind$ https://github.com/opdavies/wordcamp-bristol-2019; - rewrite ^/work/?$ /drupal-php-developer last; - rewrite ^/working-with-workspace$ /talks/working-with-workspace; - rewrite ^/workshop-drupal-testing$ https://github.com/opdavies/workshop-drupal-automated-testing; - rewrite ^/workspace-demo$ https://github.com/opdavies/working-with-workspace-demo; - rewrite ^/wp-tailwind$ https://wp-tailwind.oliverdavies.uk; - rewrite ^/wp-tailwind-repo$ https://github.com/opdavies/wordcamp-bristol-2019; - rewrite ^/wp-tailwind-starter$ https://github.com/opdavies/wordpress-tailwindcss-startker-kit; - rewrite ^/wp-tailwind-static$ https://wp-tailwind.oliverdavies.uk; - rewrite ^/yXhoS$ /talks/things-you-should-know-about-php; + if ($new_uri) { + return 301 $new_uri; + } } + +# vim: shiftwidth=4 softtabstop=4 tabstop=4 expandtab