【问题标题】:htaccess redirect from asp to php with parametershtaccess 使用参数从 asp 重定向到 php
【发布时间】:2013-04-24 09:42:44
【问题描述】:

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

【问题讨论】:

  • 您的重写规则中有abc.asp,而根据您的示例,您想重定向content.asp
  • 你想将 content.asp 页面重定向到新的站点 url 吗?
  • 这是我的错误。它不是我需要重定向的 content.asp 页面。需要的页面是 abc.asp?id=82

标签: php .htaccess


【解决方案1】:

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

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

【讨论】:

  • 是的,我们必须严格遵守这一点,因为我们的旧网站是在 asp 中,我们不想将我们的用户发送到“找不到页面”页面。
  • 以上对我有用,但它正在附加查询,因为它在 RewriteCond %{QUERY_STRING} ^id=82($|&) 中给出。还有其他方法吗?
  • @ArpiPatel 抱歉,在规则末尾省略了?
【解决方案2】:

你犯了两个主要错误:

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

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.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(永久重定向)

【讨论】:

    【解决方案3】:

    随便用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多