I am unsure if this sounds like possible but I wish to use mod_rewrite like so:

http://abc.com/something => http://abc.com/script.php?q=something

This does not work:

Options +FollowSymLinks
RewriteEngine on
RewriteRule /(.*)$ /script.php?q=$1

Can you really do?

Edit: I ought to mention mod_rewrite is working fine after i make use of this for instance:

Options +FollowSymLinks
RewriteEngine on
RewriteRule script/(.*)$ /script.php?q=$1

Edit Again: http://emailsms.me/redirect.php?id=abc

By using this:

RewriteEngine on
RewriteRule ^([A-z]{1,})$ /redirect.php?q=$1

So theoretically http://emailsms.me/abc ought to be outputting abc (all it will is echo the input right now). but rather I recieve a 404 error.

Update: It appears as if Options +FollowSymLinks is leading to the issue here. Basically comment it I recieve a 404 error however when its there and that i put anything (I am talking about anything a #) I recieve this error during my logs:

[Fri Oct 14 02:20:26 2011] [alert] [client] /home/me/redirects/.htaccess: Illegal option #

It may sound like you are carrying this out from .htaccess, instead of vhost configuration. For the reason that situation you have to loose the very first / inside your RewriteRule

Do this:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /script.php?q=$1 [L,QSA]

You most likely do not want the trailing forward slash inside your rewrite rule, and you have to make sure that the asked for file does not exist (the two RewriteCond lines) otherwise you will get a 500 Server error since the rewrite loops (/script.php will invariably match ^(.*)$ and obtain rewritten again). Observe that without having a /script.php file, you will get a 500 error since the rewrite will loop.

You could attempt something similar to:

RewriteEngine on
RewriteRule ^([A-z]{1,})$ /script.php?q=$1

It crashes using the (.*) as you can tell