mkdocs / mkdocs-redirects

Open source plugin for Mkdocs page redirects
MIT License
176 stars 25 forks source link

Redirect fails with translation plugin #33

Open MAGICCC opened 2 years ago

MAGICCC commented 2 years ago

Hello,

Now I want to use mkdocs-redirects to redirect from a old layout to a new docs layout including subfolders and translated pages using https://github.com/ultrabug/mkdocs-static-i18n But I have a small problem: Lets assume following redirection: 'old_foo.md': 'bar/foo.en.md' Normally it should redirect to bar/foo/ but it builds a redirection to bar/foo.en/ and this pages doesn't exist.

Not sure if this can be fixed, since files can be named xx.en but maybe you guys have a solution for me.

hhslepicka commented 1 year ago

I am with the same problem as the one reported here. I am using the mkdocs-static-i18n and I can't get the redirects to work. Any update?

oprypin commented 1 year ago

Please provide a mkdocs website source (mkdocs.yml and necessary sources) that exhibits this issue.

hhslepicka commented 1 year ago

@oprypin working on that.

hhslepicka commented 1 year ago

@oprypin here they are:

Steps to Reproduce

  1. Access the website at https://hhslepicka.github.io/mkdocs-redirect-issue-i18n/
  2. Click on the Old link on the home page.
  3. You will receive a 404 error
  4. Go back into the home page
  5. Click on the New link
  6. It will open the new page properly

As @MAGICCC reported, this plugin ends up generating a old.en folder with the index.html file inside of it (https://github.com/hhslepicka/mkdocs-redirect-issue-i18n/tree/gh-pages).

Also, the page is not generated for the multiple supported languages or even for the language indicated on the redirects area, it just adds it to the root.

MAGICCC commented 1 year ago

I did a quickfix on my end some days after I created the issue. Basicly a script which will change the index.html in the redirect folders

#/bin/bash
find ./site/ -maxdepth 2 -mindepth 2 -type f -name 'index.html' -not -path './site/de/*' -not -path './site/en/*' | while read f; do
    echo "Fixing redirect '$f'..."
    sed -i -E 's/\.en\/"/\/"/' $f
done

And I am speaking about this repo, https://github.com/mailcow/mailcow-dockerized-docs

oprypin commented 1 year ago

It seems that https://github.com/mkdocs/mkdocs-redirects/pull/45 is taking us closer to a solution, but it's still really tough.

Out of these two redirects, the 1st one will start working, but not 2nd:

        "en/old.md": "new.en.md"
        "pt/old.md": "new.pt.md"

Somehow the pt one is not reported to be in the files collection.

hhslepicka commented 1 year ago

@oprypin I appreciate you looking into that. Thank you very much.

kamilkrzyskow commented 1 year ago

The i18n plugin simulates the subsequent builds on the fly modifying the configuration to change the language of the theme and correctly save new.en.md under en/new/index.html. I doubt this is an issue to be dealt with in the redirects plugin. https://github.com/kamilkrzyskow/i18n/tree/redirects-plugin-support I made changes to i18n plugin, didn't create a PR yet, but it's been working OK for the past few days.

eXpl0it3r commented 3 weeks ago

Just ran into this issue. Is there as solution/workaround to this?

kamilkrzyskow commented 3 weeks ago

Hi @eXpl0it3r, you can adjust the patch hook we're using in GMC: https://github.com/Gothic-Modding-Community/gmc/blob/674ee2bac41a0d71b15ffc7744b66e928c1bdd22/overrides/.hooks/all_plugin_patch.py#L157

Note that we're generating redirects based on Git with another hook, therefore we clear redirects_map between mkdocs serve runs, looking at the code now, I would make more changes to optimize it, but it worked last time I checked a few months back :v: