htaccess从asp重定向到带参数的php

I have to redirect all my asp page to new website developed in PHP.

I had my asp page as,
abc.asp?id=82

Which need to be redirected to
siteurl/index.php/abc

Can any one help me with this in HTAccess?

I have tried with,
Redirect 301 /abc.asp?id=82 siteurl/index.php/abc

rewriterule ^/abc.asp?id=82$ siteurl/index.php/abc[R=301,L]

But this is not working and giving me a 404 error.

You can't match against the query string in either a Redirect or RewriteRule. It's not very clear what the scope you're trying to accomplish here. Is the id=82 important? Does abc mean "anything that's just letters"? Is siteurl a directory or a domain name? If it's strictly what you've attempted, then this is strictly how it'll work:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=82($|&)
RewriteRule ^/?abc.asp$ siteurl/index.php/abc? [L,R=301]

You're making 2 main mistakes:

  1. Rewrite rule matches only URI part and doesn't match query string
  2. Rewrite rule in .htaccess doesn't match leading slash.

Enable mod_rewrite and .htaccess through httpd.conf and then put this code in your .htaccess under DOCUMENT_ROOT directory:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^id=82(&|$) [NC]
RewriteRule ^(abc)\.asp$ http://domain.com/index.php/$1 [R=302,L,NC]

Once you verify it to be working replace 302 (Temporary Redirect) with 301 (Permanent Redirect)

Just use

RewriteRule ^abc.asp$ siteurl/index.php/abc [R=301,QSA,L]

That should do the job.. Using the QSA flag will forward any GET paramater too, if that's what you meant with the title.