Subdirectory and publish directory, redirection

Hi, thank you for netlify this is a wonderful tool.

I’m facing a weird issue about redirection setting on netlify.toml. I made a very simple repository to reproduce this issue.

and this is the instance.: hopeful-spence-2f41dd

issue

redirection doesn’t work when I wrote base and publish and redirect on the same netlify.toml file.

Step1: without base setting

[build]
  publish = "publish/"

without base setting, netlify can build this and detect one redirection setting(this’s fine.)

Step2: with base setting.

Let’s move the publish directory to a subdirectory.

[build]
  base = "subdirectory"
  publish = "publish/"

Though I just added 1 line about base setting, netlify cannot detect redirection.

Step3: puting the config on publish directory

This is additional information. When I copy netlify.toml on publish directory,

The redirection works!

I know it’s not good to put 2 netlify.toml in a repository and we can use _redirect file as a workaround.
But I’m suspecting this’s a bug netlify watching the wrong place config file.

Hi there! We’re glad to hear you’re enjoying Netlify and thanks for this report :slight_smile: One issue that may be getting in the way in Step2 is that your base directory doesn’t have a / after it and the publish directory is not relative to the root, as described here:

Does the index.html publish in that case?

The Step3 you mention is very interesting and weird- I’m guessing that the inner .toml file is being picked up, based on the issues I described above with the outer .toml. It would be interesting if you switched the redirects- from index.html to index2.html. My guess is that even though the redirect is being loaded, it is not doing anything- just publishing the index.html file in the “root” (where the inner .toml is).

Anyway, thanks again and let us know if there’s anything you’d like our help with going forward!

Thank you for your reply. I’ve tried.

  1. set trailing slash after “base”.
[build]
  base = "subdirectory/"
  publish = "publish/"

[[redirects]]
:

Still netlify do not detect redirect rule.

  1. and set publish directory as relative to root
[build]
  base = "subdirectory/"
  publish = "subdirectory/publish/"

Netlify could not build with this setting…

4:40:05 PM: failed during stage 'building site': Deploy directory 'subdirectory/subdirectory/publish' does not exist

Hi, @mogya. If you change the publish directory in netlify.toml then you must also put a netlify.toml (or _redirects) file in the base of the publish directory.

The redirects in the first netlify.toml, the one which changes the base directory, will never be read.

There is a more detailed explanation of this behavior here:

If there are other questions about this, please let us know.

Wow, that’s a spec? Okay I see!
I’m happy if you write clarify this thing on document page. It’s difficult to find the page on QA forum.

I see what you are saying! Thanks for pointing this out :muscle: