22
Rewrite your configuration file A Lightning Talk By Rich Bowen ApacheCon US, Atlanta, 2007 1

Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Rewrite your configuration file

A Lightning Talk By Rich BowenApacheCon US, Atlanta, 2007

1

Page 2: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Two years ago

Apache configuration needs a macro language

2

http://i-want-a-pony.com

Page 3: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Lesson from IRC: All Apache configuration

directives can be replaced with

mod_rewrite directives

3

Page 4: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

mod_rewrite, the Swiss Army Knife(tm)

of Apache configuration

4

Page 5: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

5

Page 6: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

How some people interpret this:

6

Page 7: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Let’s start simple ...

7

Page 8: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

DocumentRoot

Or, perhaps

8

RewriteRule (.*) /var/www$1

RewriteRule ^ /var/www%{REQUEST_URI}

Page 9: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

AliasAnd, if you have files outside of your DocumentRoot ...

9

RewriteRule ^/icons(.*) /var/www/icons$1 [L]RewriteCond %{REQUEST_URI} !^/iconsRewriteRule ^(.*) /var/www/html$1

Page 10: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

DirectoryIndex

Ah, but what if the URI doesn’t end with /

What then?!

10

RewriteRule ^(.*)/$ $1/index.html

Page 11: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

DirectoryIndex

11

RewriteCond /var/www%{REQUEST_URI} -dRewriteCond /var/www/%{REQUEST_URI} !-fRewriteRule ^(.*)/?$ $1/index.html [PT,L]

# Yes, I’ve actually seen this on IRC# Don’t try this at home, kids

Page 12: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Actual production config ...

12

RewriteCond %{REQUEST_FILENAME}/index.html -fRewriteRule / %{REQUEST_URI}/index.html [L] RewriteCond %{REQUEST_FILENAME}/index.htm -fRewriteRule / %{REQUEST_URI}/index.htm [L]

RewriteCond %{REQUEST_FILENAME}/index.php -fRewriteRule / %{REQUEST_URI}/index.php [L]

# AKA: # DirectoryIndex index.html index.htm index.php

Page 13: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Redirect

13

RewriteRule ^/foo(.*) http://foo.com$1 \ [R=301,L,NC,NE,QSA,EIEIO]

Page 14: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

But those are too easy. How about something with a little challenge?

14

Page 15: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

UserDir

15

RewriteRule ^~([^/]+)(.*) \ /home/$1/public_html/$2

Page 16: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Allow/Deny

16

RewriteCond %{REMOTE_ADDR} !^192.168RewriteRule ^ - [F]

Page 17: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

No, still too easy

17

Page 18: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

LimitRequestLine

18

RewriteRule .{250,} - [F]

Page 19: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

And, to top it off ...

19

Page 20: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

20

<Directory /var/www/private> AuthType Basic AuthName ‘Go Away’ AuthUserFile /etc/htpasswd Require valid-user

# Make usernames case insensitive RewriteCond %{REMOTE_USER} \ !(rbowen|krietz|dpitts) [NC] RewriteRule ^ - [F,L]</Directory>

Page 21: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

Proposal: mod_config_rewrite

21

Page 22: Rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite directives 3 mod_rewrite, the Swiss Army Knife (tm) of Apache configuration 4 5 How some

That’s all I’ve got

22