9

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.

15

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

| improve this answer | |
  • Nice idea, but unfortunately this will also return 404 for anything matching '/your/url/path/*', which is a problem for me. – AndiDog Mar 1 '11 at 19:17
  • 1
    @Andi: You should be more specific in your questions. – hobodave Mar 1 '11 at 19:19
  • Sorry for that ;) The RedirectMatch solution works like a charm. – AndiDog Mar 1 '11 at 19:29
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.

| improve this answer | |
  • Well, I'd like to have a generic non-rewrite solution. I know the mod_rewrite solution already. – AndiDog Mar 1 '11 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 at 21:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.