According to what you've written your directory structure is this:
"/" (root)
|
|___ "-" (directory)
|
|___ .htaccess
|___ index.php
However the RewriteRule is this:
RewriteRule ^/?-/([0-9]+)$ /index.php?id=$1
With the directory structure you've specified that rule will never match unless you're requesting an url like http://www.example.com/-/-/123
(note 2 levels of hyphen). This is because the path that .htaccess
uses is relative to where the file is and you've stated that it's in a directory called "-". The leading slash will not jump the URL matching up to root, and because you've allowed it 0 or 1 times (?) it'll just be ignored so, in effect, it's looking for a directory called "-" from inside a directory called "-".
Then if you look at where your rewrite is actually going, it's not going to /-/index.php
but to /index.php
(the root of the domain); the leading /
will take effect on the rewrite.
The rule almost makes sense if your index and .htaccess files are in the docroot:
"/" (root)
|
|___ .htaccess
|___ index.php
... and that "-" directory doesn't actually exist but it just being used as a rewrite trigger in the URL.
In which case your RewriteRule should be:
RewriteRule ^-/([0-9]+)$ /index.php?id=$1
HOWEVER none of this will cause an HTTP 500 error - you have a further problem somewhere that you've not shown us.