https://bz.apache.org/bugzilla/show_bug.cgi?id=70032

            Bug ID: 70032
           Summary: Guide to Apache mod_rewrite: complexity
           Product: Apache httpd-2
           Version: 2.5-HEAD
          Hardware: All
               URL: https://httpd.apache.org/docs/trunk/en/rewrite/
                OS: All
            Status: NEW
          Severity: minor
          Priority: P3
         Component: Documentation
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

The Guide to Apache mod_rewrite contains:
> Since mod_rewrite is so powerful, it can indeed be rather complex.
For its part, Apache mod_rewrite Introduction contains:
> The Apache module mod_rewrite is a very powerful and sophisticated module 
> which provides a way to do URL manipulations. With it, you can do nearly all 
> types of URL rewriting that you may need. It is, however, somewhat complex, 
> and may be intimidating to the beginner. There is also a tendency to treat 
> rewrite rules as magic incantation, using them without actually understanding 
> what they do.
I hate to judge the complexity of something I do not master, but I’m afraid
calling mod_rewrite “rather” or “somewhat” complex is an understatement. I
created my first website nearly 3 decades ago, have been administrating httpd
instances for more than 2 decades, have a CS bachelor's degree, have worked as
a fulltime full-stack developer―often as administrator―for a couple decades,
and I started dealing with mod_rewrite specifically > 1½ decades ago, yet I
still do not understand it well (although of course I only dealt with
mod_rewrite for a couple person-weeks at best during that period).

I believe mod_rewrite should be called simply “complex” or “complicated”. But
regardless of sugar-coating, its complexity should not be attributed simply to
its power. Rich Bowen described mod_rewrite as “very temperamental”:
https://lists.apache.org/thread/94gh4txmxnt8y4bknz9p8p4ygnot08sq
Rich wrote a mod_rewrite book of more than 100 pages (much of which is
thankfully dedicated to guide about using that power, not just specifying):
https://mod-rewrite.org/

Terry Ellisons wrote in 2012 that he had “been fighting the intricacies of
rewrite rules for years”, commenting:
> Apache is extremely weak explaining how rewriting works for this use case. 
> For example it does not provide a clear explanation of what PerDir .htaccess 
> file is selected and why. It does not explain the intricacies of PerDir 
> cycling and how to avoid this.
https://serverfault.com/a/349938/370849

The Apache 1.3 URL Rewriting Guide read:
> In other words: With mod_rewrite you either shoot yourself in the foot the 
> first time and never use it again or love it for the rest of your life 
> because of its power.
https://docs.oracle.com/cd/B13789_01/server.101/q20201/misc/rewriteguide.html

The 2.0 doc's introduction contained:
>`` Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool 
>voodoo, but still voodoo. ''
> -- Brian Moore

> But all this functionality and flexibility has its drawback: complexity. So 
> don't expect to understand this entire module in just one day.
https://httpd.apache.org/docs/2.0/en/rewrite/

But the most interesting must be our FAQ:
> Why is mod_rewrite so difficult to learn and seems so complicated?
> 
> Hmmm... there are a lot of reasons. First, mod_rewrite itself is a powerful 
> module which can help you in really all aspects of URL rewriting, so it can 
> be no trivial module per definition. To accomplish its hard job it uses 
> software leverage and makes use of a powerful regular expression library by 
> Henry Spencer. And regular expressions itself can be difficult to newbies, 
> while providing the most flexible power to the advanced hacker.
> 
> On the other hand mod_rewrite has to work inside the Apache API environment 
> and needs to do some tricks to fit there. For instance the Apache API really 
> was not designed for URL rewriting at the .htaccess level of processing. Or 
> the problem of multiple rewrites in sequence, which is also not handled by 
> the API per design. To provide this features mod_rewrite has to do some 
> special (but API compliant!) handling which leads to difficult processing 
> inside the Apache kernel. While the user usually doesn't see anything of this 
> processing, it can be difficult to find problems when some of your 
> RewriteRules seem not to work.
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115522309#FAQ-Whyismod_rewritesodifficulttolearnandseemssocomplicated?

I do not know httpd internals and cannot confirm which role architecture plays
in the problem, but while it is clear that regular expressions and power bring
major inherent complexity, a huge share of the issue comes from:
1. configuration
2. the proliferation and quality of resources needed to understand
configuration
3. the tools available to debug that configuration.

🅭🄍: https://www.philippecloutier.com/Common+infrastructure+licensing#its

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to