rewrite your configuration filepeople.apache.org/~rbowen/mod_config_rewrite.pdfmod_rewrite...
TRANSCRIPT
![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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/1.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/2.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/3.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/4.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/5.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/9.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/13.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/14.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/15.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/16.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/18.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/19.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022071011/5fc98ef9c297a17b160e50d3/html5/thumbnails/22.jpg)
That’s all I’ve got
22