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

时间:2013-04-24 09:42:44

标签: php .htaccess

我必须将我的所有asp页面重定向到用PHP开发的新网站。

我有我的asp页面,
abc.asp?id=82

哪个需要重定向到
siteurl/index.php/abc

任何人都可以在HTAccess中帮助我吗?

我试过了,
Redirect 301 /abc.asp?id=82 siteurl/index.php/abc

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

但这不起作用并给我404错误。

3 个答案:

答案 0 :(得分:2)

您无法与RedirectRewriteRule中的查询字符串进行匹配。目前还不清楚你要在这里完成的范围是什么。 id=82重要吗? abc是否意味着“任何只是字母”? siteurl是目录还是域名?如果它严格来说是你所尝试的,那么严格来说它是如何运作的:

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

答案 1 :(得分:1)

你犯了2个主要错误:

  1. 重写规则仅匹配URI部分且与查询字符串
  2. 不匹配
  3. .htaccess中的重写规则与前导斜杠不匹配。
  4. 通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

    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]
    

    验证工作后,用301(永久重定向)替换302(临时重定向)

答案 2 :(得分:0)

只需使用

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

那应该可以胜任。使用QSA标志也可以转发任何GET参数,如果这就是你对标题的意思。