【问题标题】:htaccess: redirect to a same page, but with different query string valuehtaccess:重定向到同一页面,但查询字符串值不同
【发布时间】:2012-09-01 23:22:32
【问题描述】:

我有一个带有查询字符串的页面,我想重定向到具有不同查询字符串值的同一页面:

www.mysite.com/pages/page.php?id=5(这是旧页面)
www.mysite.com/pages/page.php?id=7(这是需要重定向到的新页面)

RewriteEngine on

RewriteCond %{QUERY_STRING} ^id=5$ [NC]

RewriteRule ^pages/page\.php$ pages/page.php?id=7 [R=301,L]

它不起作用。有人可以帮助我吗?谢谢!

【问题讨论】:

  • 您的.htaccess 文件在哪里?在根目录或pages?
  • 你希望它是外部重定向吗?还是内部?
  • 地址栏也要改一下,不知道有没有用。
  • 请注意:您可能希望在 PHP 中执行此操作,而不是 mod_rewrite。 AFAICS 没有办法在 htaccess 中安全地查询查询字符串,所以你要么得到足够的重定向(即 ?id=5&PHPSESSID=... 不起作用)要么太多(即如果你让它太贪婪,?id=51 会匹配)。
  • 在任何情况下,尝试在路径前加上斜杠,即^pages/page\.php$ 到^/pages/page\.php$。

标签: .htaccess mod-rewrite query-string


【解决方案1】:
RewriteEngine on

RewriteCond %{QUERY_STRING} ^id=5$ [NC]

RewriteRule ^pages/page\.php$   http://%{HTTP_HOST}/pages/page.php?id=7 [R=301,L,NC]

【讨论】:

  • 我试过没有结果
  • 嗯,基本上,所请求的页面(旧页面)只是加载
  • 我编辑了我的答案!如果没有帮助,请尝试清除缓存并重试!
  • 看,重写规则很好,我能猜到的唯一问题是你的浏览器缓存重定向!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多