Skip to content

Parsing Apache Rewrite Rules #105

Description

@kepi

I'm not sure if this is out of scope of this project, but I wanted to use it to parse real apache configs to store them in NoSQL database so I can query some info about vhosts.

It looked great untill I hit rewrite rules/conds. Problem with Rewrite rules is that order is important.

Having this conf

RewriteEngine On
RewriteCond  %{HTTP_HOST}  ^([^.]+\.[^.]+)(:\d+)?$
RewriteCond  /domains/domain.com/web/_ !-d
RewriteCond  %{HTTP:X-Forwarded-Proto} =https
RewriteRule  ^(.*)$  https://www.%1$1 [L,R=301,QSA]

RewriteCond  %{HTTP_HOST}  ^([^.]+\.[^.]+)(:\d+)?$
RewriteCond  /domains/domain.com/web/_ !-d
RewriteCond  %{HTTP:X-Forwarded-Proto} !=https
RewriteRule  ^(.*)$  http://www.%1$1 [L,R=301,QSA]

I'm getting:

{
  "rewritecond": [
    "%{HTTP_HOST}  ^([^.]+\\.[^.]+)(:\\d+)?$",
    "/domains/domain.com/web/_ !-d",
    "%{HTTP:X-Forwarded-Proto} =https",
    "%{HTTP_HOST}  ^([^.]+\\.[^.]+)(:\\d+)?$",
    "/domains/domain.com/web/_ !-d",
    "%{HTTP:X-Forwarded-Proto} !=https"
  ],
  "rewriterule": [
    "^(.*)$  https://www.%1$1 [L,R=301,QSA]",
    "^(.*)$  http://www.%1$1 [L,R=301,QSA]"
  ],
  "rewriteengine": "1"
}

Which is simply not possible to convert back to working config. I'm not sure what would be best approach.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions