As per the Redirects and Rewrites documentation you need to save the _redirects to the publish directory. Is the root directory where you have saved the _redirects the directory that is published?
You will also want to follow the Domain-level Redirects documentation and create a wildcard rule so all paths are rewritten to the new URL not just the domain root.
Without knowing how you are building the site this is only a guess, but it is possible the _site directory is created during the build process and anything in it overwritten. If this is the case, you may need to append a command such as cp _redirects _site to the build command to ensure the file is in the deploy directory.
That build command won’t work. You would need jekyll build --trace && cp _redirects _site(assuming jekyll overwrites _site during build which I do not know as I don’t use it.) You may want to look at the Jekyll Documentation to see if there is another/better way to accomplish this.
Every file or directory beginning with the following characters: . , _ , # or ~ in the source directory will not be included in the destination folder. Such paths will have to be explicitly specified via the config file in the include directive to make sure they’re copied over:
Looking at your previous build, it seems that there was a redirects.json file added but did not have the proper contents (and the file name should be _redirects).
Do you mind trying a whole different strategy here? Let’s try to add the redirects through a netlify.toml file. This file-based build approach will allow you to set/override multiple options on your build, being one of them the redirects.
In a netlify.toml file, each redirect has its own section. In your case:
[[redirects]]
from: "https://ftso.com.au/*"
to: "https://ftso.au/:splat"
force = true
[[redirects]]
from: "https://www.ftso.com.au/*"
to: "https://www.ftso.au/:splat"
force = true
The default HTTP status code for redirects is 301 so you don’t need to specify it there.
Can you try to apply this inside your netlify.toml file which needs to be created at the root level of your app.
With this approach you can remove the “cp” from your build command.