B.7 Debugging Rewrites That Result in "Not Found" ErrorsIf your RewriteRule directives keep resulting in 404 Not Found error pages, add the PT (PassThrough) flag to the RewriteRule line. Without this flag, Apache won't process a lot of other factors that might apply, such as Alias settings. You can verify that this is the cause of your problem by cranking the mod_rewrite logging level up to 9 and seeing that the entries relating to the RewriteRule mention something about prefixes with document_root: RewriteLog logs/rewrite-log RewriteLogLevel 9 % tail logs/rewrite_log ip-address - - [date ] [reqid ] (2) prefixed with document_root to /usr/local/apache/htdocs/robots.text ip-address - - [date ] [reqid ] (1) go-ahead with /usr/local/apache/htdocs/robots.text [OK]
Without the PT flag, mod_rewrite assumes that any rewriting it does will be the last URL manipulation the server needs to do for the request. Since mod_rewrite directives are handled very early in request processing, this can mean that Alias, ScriptAlias, and other URL manipulations may not get executed. Specifying the flag tells mod_rewrite to not short-circuit processing, but let it continue as usual. |