I’m setting up Apache rewrite rules to tidy up my CodeIgniter URLs.
This question (and lots of forum posts etc that I’ve found around the place) document the use of the following rule (or something very similar):
RewriteEngine on
RewriteCond $1 !^(index\.php|phpinfo\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]
I know the $1 after the RewriteRule refers to the captured string from (.*), but what does the first $1 (straight after the RewriteCond) represent? A lot of examples I’ve seen use something like %{REQUEST_URI} as the first argument for RewriteCond.
The
$1is basically the captured contents of everything from the start and the end of the string. In other words,$1 = (.*).In your rewrite, the
^signifies the start of the string, the(.*)says to match anything, and the$signifies the end of the string. So, basically, it’s saying grab everything from the start to the end of the string and assign that value to $1.So if I type in
www.example.com/tacos-are-good, then$1 = "tacos-are-good". So your end rewrite will actually bewww.example.com/index.php/tacos-are-good.Here’s a cheat sheet for ModRewrite which may be of help:
http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/