Oi! You're not drowning, you're just asking an Apache question. Most people around here have day jobs. So let me start by ripping your rule to shreds.
RewriteRule ^([a-z]+)/?((\d+))?/?$ index.php?page=$1&id=$3 [QSA,L]
Rule works on any request that begins with one or more lower-case letters, possibly followed by some combination of numbers and directory slashes:
abc/123/
abc/123
abc//
abc123/
abc/
abc123
abc
I'm pretty sure you didn't mean to admit all of those possibilities.
But first: I am mystified by the ((\d+))? element. Since $2 and $3 will always be the same, there is no need to capture them separately-- especially since you never use $2 at all! And since the whole thing is optional, it all collapses to (\d*)
I suspect what you really mean is
^([a-z]+)(/\d+)?/?$
where the whole numerals directory is optional.
Now, the flags: [QSA] means "add this to the existing query" instead of the default "replace the existing query with this new one". But there shouldn't
be an existing query. If there is no query, QSA will not do any harm. But it isn't necessary.
and for search
www.example.com/search/search+word
so... i cant make the GET form... to make that kind of action...
When i post in action parameter: action="/search/" my form open this:
www.example.com/search/?search=search+word
i try to remove the name parameter but when submit... the form open this:
www.example.com/search/?
I think we may have a little bit of a language problem. What do you mean by "search+word"? Where is the "name parameter"? I don't mean where is it in your form. I mean, where is it in the RewriteRule?
You have probably made your Rewrite too general. Collapsing many similar things into a single rule is good, but you can overdo it. Showing a page is one thing; going to search results is another. I think it would be safer to make one Rule specifically for /search/ and a different rule for all the other things.