11

Is it possible to let Apache automatically return a 404 page for a single URL using the Location tag?

<Location "/some/url">
    # ???
</Location>

Solutions without mod_rewrite or any other modules preferred.

2 Answers 2

19

The only solution "without any modules", is to not have the resource exist. If the location doesn't exist, then it Apache will return a 404.

Otherwise, you will need to use mod_alias or mod_rewrite. mod_alias is the simpler and more efficient solution:

Redirect 404 /your/url/path

You use this inside your vhost, there is no need to put it in a Location block.

You can also use the RedirectMatch directive if you don't want to match URLs below /your/url/path:

RedirectMatch 404 ^/your/url/path$

This and more can be read in the mod_alias documentation

4
  • Nice idea, but unfortunately this will also return 404 for anything matching '/your/url/path/*', which is a problem for me.
    – AndiDog
    Mar 1, 2011 at 19:17
  • 1
    @Andi: You should be more specific in your questions.
    – hobodave
    Mar 1, 2011 at 19:19
  • Sorry for that ;) The RedirectMatch solution works like a charm.
    – AndiDog
    Mar 1, 2011 at 19:29
  • It is not working at all for me. And according to the documentation 404 is no valid status for Redirect / RedirectMatch
    – AnnetteC
    Mar 2, 2023 at 12:15
1

Apparently you can use a RewriteRule for this (make sure your RewriteEngine is enabled):

RewriteRule ^/forbidden_ /nonexistent [L]

Got this information from "return 404 for specific url?" in the Apache mailing list archives.

2
  • Well, I'd like to have a generic non-rewrite solution. I know the mod_rewrite solution already.
    – AndiDog
    Mar 1, 2011 at 18:47
  • People are so used to use mod_rewrite for what it was never intended for… your solution will not work if website uses FallbackResource directive. Redirect 404 /path, however, will.
    – AnrDaemon
    Mar 23, 2020 at 21:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .