rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite...

Post on 20-Aug-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Rewrite your configuration file

A Lightning Talk By Rich BowenApacheCon US, Atlanta, 2007

1

Two years ago

Apache configuration needs a macro language

2

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

Lesson from IRC: All Apache configuration

directives can be replaced with

mod_rewrite directives

3

mod_rewrite, the Swiss Army Knife(tm)

of Apache configuration

4

5

How some people interpret this:

6

Let’s start simple ...

7

DocumentRoot

Or, perhaps

8

RewriteRule (.*) /var/www$1

RewriteRule ^ /var/www%{REQUEST_URI}

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

DirectoryIndex

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

What then?!

10

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

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

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

Redirect

13

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

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

14

UserDir

15

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

Allow/Deny

16

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

No, still too easy

17

LimitRequestLine

18

RewriteRule .{250,} - [F]

And, to top it off ...

19

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>

Proposal: mod_config_rewrite

21

That’s all I’ve got

22

top related