Using Caddy to give WordPress its own directory

Caddy wiki reference: Using Caddy to give WordPress its own directory

This was the original instruction for Method I using the expanded form of php_fastcgi.

  1. After Installing WordPress in the root folder, move everything from the root folder into subdir.
  2. Add the following snippet to the Caddyfile.
(php_fastcgix) {
     route {
         # Add trailing slash for directory requests
         @canonicalPath {
             file {path}/index.php
             not path */
         }
         redir @canonicalPath {path}/ 308

         # If the requested file does not exist, try index files
         @indexFiles file {
             try_files {path} {path}/index.php {args.0}/index.php
             split_path .php
         }
         rewrite @indexFiles {http.matchers.file.relative}

         # Proxy PHP files to the FastCGI responder
         @phpFiles path *.php
         reverse_proxy @phpFiles {args.1} {
             transport fastcgi {
                 # env SERVER_PORT 80
                 split .php
             }
         }
     }
 }
  1. Update the site block in the Caddyfile and then reload Caddy.
     # Rewrite if the requested URI doesn't begin with /subdir/ or is a non-existent file 
     @subdir {
         not path /subdir/*
         not file
     }
     rewrite @subdir /subdir{uri}
     #  import php_fastcgix /subdir unix//run/php/php7.4-fpm.sock
     import php_fastcgix /subdir 127.0.0.1:9000
  1. Log in to WordPress at mydomain.com/admin

This is the revised instruction:

  1. After Installing WordPress in the root folder, move everything from the root folder into subdir.
  2. Update the site block in the Caddyfile and then reload Caddy.
    # Rewrite if the requested URI isn't prefixed with the directory /subdir/ or is a non-existent file 
    @subdir {
        not path /subdir/*
        not file
    }
    rewrite @subdir /subdir{uri}

    # Proxy requests to PHP-FPM.
    #  php_fastcgi unix//run/php/php7.4-fpm.sock {
    php_fastcgi 127.0.0.1:9000 {
        index off
    }
    try_files {path} {path}/index.php /subdir/index.php
  1. Log in to WordPress at mydomain.com/admin

Keep Reading

PreviousNext

Comments

Leave a Reply