Setting a default Apache RewriteRule entry
-
13-09-2019 - |
Question
I want to set a 'default' rewrite rule to catch anything that didn't match the previous rewrite entries. I've tried this:
RewriteRule ^(.*)/?$ index.php?url=$1 [L]
But the output returned is:
url = index.php
Ideally what I want is to attach all the GET values to 'url' so they will be saved to my web log. Anyone have any suggestions how to solve this?
Solution
Omit needless parentheses in regular expressions whenever you can:
RewriteRule .* index.php?url=$0 [L]
If you want to exclude "index.php":
RewriteRule ^(?!index\.php).* index.php?url=$0 [L]
OTHER TIPS
You need to exclude the destination from your rule:
RewriteCond $1 !=index.php
RewriteRule ^(.*)/?$ index.php?url=$1 [L]
Try to remove slash:
RewriteRule ^(.*)$ index.php?url=$1 [L]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow