2

我必须将我所有的 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 错误。

4

3 回答 3

2

您无法匹配 aRedirect或中的查询字符串RewriteRule。目前尚不清楚您要在这里完成的范围。id=82重要吗?abc意思是“任何只是字母的东西”吗?是siteurl目录还是域名?如果严格来说这是您尝试过的,那么严格来说这就是它的工作方式:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=82($|&)
RewriteRule ^/?abc.asp$ siteurl/index.php/abc? [L,R=301]
于 2013-04-24T09:52:23.473 回答
1

你犯了两个主要错误:

  1. 重写规则仅匹配 URI 部分,不匹配查询字符串
  2. .htaccess 中的重写规则与前导斜杠不匹配。

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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]

一旦您验证它正在工作,将 302(临时重定向)替换为 301(永久重定向)

于 2013-04-24T09:52:18.723 回答
0

只需使用

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

那应该可以完成工作..QSA如果这就是您对标题的意思,那么使用该标志也将转发任何​​ GET 参数。

于 2013-04-24T09:52:49.863 回答