1

When calling {% redirect externalUrl %} from source mydomain.com/#anchor to externalUrl = destination.com the #anchor is appended to the externalUrl after the redirect (destination.com/#anchor).

Note that the code is called by a routing template in craft cms.

The externalUrl variable does not contain the anchor link fragment and I cannot find a way to prevent craft from adding it. The only way I succeeded was using javascript code, but I don't like that solution:

<script>
    window.location.href = '{{ externalUrl }}'; // this works
</script>
{% exit %}

I can remove the anchor fragment using this js code as well but for some reason it still appends to the redirect url in the end, maybe due to some timing issue:

<script>
    // this removes the anchor in the browser url field
    window.location.replace("#");
    if (typeof window.history.replaceState == 'function') {
      history.replaceState({}, '', window.location.href.slice(0, -1));
    }
</script>
{% redirect url %} {# not working, still adds anchor #}

How can I do this without js?

1
  • I have reproduced this... It seems like a Craft bug to me, probably worth reporting. Commented Mar 4, 2024 at 9:22

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.