From ef65157cbf362045bd0eaa1f118fc798e0b9990c Mon Sep 17 00:00:00 2001 From: p4u1 Date: Wed, 8 Nov 2023 17:21:08 +0100 Subject: [PATCH] introduce MULTISITE env variable to change .htaccess --- .env.sample | 1 + abra.sh | 1 + compose.yml | 6 ++++++ htaccess.tmpl | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 htaccess.tmpl diff --git a/.env.sample b/.env.sample index be77cb2..2032bc8 100644 --- a/.env.sample +++ b/.env.sample @@ -41,6 +41,7 @@ SECRET_DB_PASSWORD_VERSION=v1 # Multisite phase 2 (see README) #WORDPRESS_CONFIG_EXTRA="define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', '${DOMAIN}'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); define('FORCE_SSL_ADMIN', true ); define('COOKIE_DOMAIN', \$_SERVER['HTTP_HOST']);" +#MULTISITE=subfolder # either 'subfolder' or 'subdomain' # Local SMTP relay #COMPOSE_FILE="$COMPOSE_FILE:compose.mailrelay.yml" diff --git a/abra.sh b/abra.sh index 0c6384f..9186da6 100644 --- a/abra.sh +++ b/abra.sh @@ -2,6 +2,7 @@ export PHP_UPLOADS_CONF_VERSION=v3 export ENTRYPOINT_CONF_VERSION=v5 export ENTRYPOINT_MAILRELAY_CONF_VERSION=v2 export MSMTP_CONF_VERSION=v4 +export HTACCESS_CONF_VERSION=v1 wp() { su -p www-data -s /bin/bash -c "/usr/local/bin/wp $@" diff --git a/compose.yml b/compose.yml index 9a8ae5f..20dff9e 100644 --- a/compose.yml +++ b/compose.yml @@ -31,6 +31,8 @@ services: - source: entrypoint_conf target: /docker-entrypoint.sh mode: 0555 + - source: htaccess_conf + target: /var/www/html/.htaccess entrypoint: /docker-entrypoint.sh depends_on: - db @@ -107,3 +109,7 @@ configs: php_uploads_conf: name: ${STACK_NAME}_php_uploads_conf_${PHP_UPLOADS_CONF_VERSION} file: uploads.ini + htaccess_conf: + name: ${STACK_NAME}_htaccess_conf_${HTACCESS_CONF_VERSION} + file: htaccess.tmpl + template_driver: golang diff --git a/htaccess.tmpl b/htaccess.tmpl new file mode 100644 index 0000000..24739f8 --- /dev/null +++ b/htaccess.tmpl @@ -0,0 +1,57 @@ +{{ if eq (env "MULTISITE") "" -}} +# BEGIN WordPress + +RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +RewriteBase / +RewriteRule ^index\.php$ - [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /index.php [L] + +# END WordPress +{{- end -}} + +{{- if eq (env "MULTISITE") "subfolder" -}} +# BEGIN WordPress Multisite +# Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite + +RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +RewriteBase / +RewriteRule ^index\.php$ - [L] + +# add a trailing slash to /wp-admin +RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] + +RewriteCond %{REQUEST_FILENAME} -f [OR] +RewriteCond %{REQUEST_FILENAME} -d +RewriteRule ^ - [L] +RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] +RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] +RewriteRule . index.php [L] + +# END WordPress Multisite +{{- end -}} + +{{- if eq (env "MULTISITE") "subdomain" -}} +# BEGIN WordPress Multisite +# Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite + +RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +RewriteBase / +RewriteRule ^index\.php$ - [L] + +# add a trailing slash to /wp-admin +RewriteRule ^wp-admin$ wp-admin/ [R=301,L] + +RewriteCond %{REQUEST_FILENAME} -f [OR] +RewriteCond %{REQUEST_FILENAME} -d +RewriteRule ^ - [L] +RewriteRule ^(wp-(content|admin|includes).*) $1 [L] +RewriteRule ^(.*\.php)$ $1 [L] +RewriteRule . index.php [L] + +# END WordPress Multisite +{{- end }}