WordPress has a feature whereby it will automatically redirect your URLs if it percieves them to be written wrongly. Here is an example: I have a page called my-page
If I go to:
www.mysite.com/something/my-page/
it will immediately redirect me to
www.mysite.com/my-page/
as nothing exists at the first URL.
How can I turn this feature off, and instead just get a 404 if incorrect URL’s are typed in?
This worked for me:
As Ash suggested, you can turn off the feature by using the following code:
In looking at the redirect_canonical function in canonical.php, it would appear you can also modify the behavior with your own filter.
At the end of the redirect_canonical() function, there is a call to filter the final answer:
So you could write your own filter to modify the final redirection or return null to stop the redirection, based upon the input, thus turning off the feature for a particular URL or a subset of URLs.
You can disable permalink guessing for 404s without disabling redirection of canonical URLs by adding the following line somewhere in your code (eg. in
functions.php
):Relevant functions in the WordPress code are
redirect_canonical
andredirect_guess_404_permalink
inwp-includes/canonical.php
.