next-drupal icon indicating copy to clipboard operation
next-drupal copied to clipboard

Infinite redirect loop with ISG and ODR in edge cases

Open yobottehg opened this issue 2 years ago • 2 comments

Hei,

i wanted to report a potential bug with redirects integration and incremental static regeneration and on-demand revalidation which results in an infinite redirect loop in the next website.

Steps to reproduce:

  • Have ISG and On-demand revalidation enabled and configured
  • Run the next.js app in production mode (Because ISG is re-done each request on dev mode)
  • Pathauto and redirect need to be configured correctly and the client is adapter like here: https://next-drupal.org/guides/redirects
  • Have a content type with a path auto pattern based on a content field (e.g title) we use here /article/test as an example
  • Change the title from test to test1. A redirect from /article/test to /article/test1 is created in Drupal. Loading /article/test in the client serves a 301 redirect to /article/test1 --> OK
  • Change the title from test1 back to test. The redirect from /article/test to /article/test1 in Drupal is deleted. A Redirect from /article/test1 to /article/test is created. Loading /article/test1 in Drupal works okay. Also the redirect works okay.
  • Loading /article/test in the client leads to an infinite redirect loop. Potentially because the delete of the old redirect did not trigger a revalidation on the client on the old url. So the client now has 2 cached redirects which lead to each other -> Loop

Potential fixes:

  • If the url changed revalidate the old and the new path
  • Revalidate urls also on redirect creation / change

yobottehg avatar Mar 13 '23 14:03 yobottehg

@yobottehg Thanks for the detailed instructions. I'll look into this.

shadcn avatar Mar 23 '23 14:03 shadcn

Any information about this. We have a similar bug.

Drupal user change a site and a auto redirect will be created from the redirect module. But this will not update the next cache. If I disable the auto generate redirect on alias change in the redirect module and create a redirect manual it will work as intended

taskrider2022 avatar Sep 21 '23 06:09 taskrider2022