【问题标题】:Redirect php page to another php page using 301 .htaccess使用 301 .htaccess 将 php 页面重定向到另一个 php 页面
【发布时间】:2012-09-09 17:50:34
【问题描述】:

我有一个动态页面,我需要重定向到 .htaccess 中的另一个动态页面。

我尝试了不同的重定向语法,但似乎没有任何效果:

RewriteEngine on 
RewriteRule /index.php?p=page&page_id=store$ http://www.website.com/index.php [R=301]

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^p=page&page_id=store$
RewriteRule ^/index.php$ http://www.website.com/index.php? [L,R=301]

编辑:我已经转移到新地址的购物车中有一个旧的 php 页面。因此,为了保持搜索引擎页面排名,我想将旧页面重定向到新地址。我希望仍然访问 www.website.com/index.php?p=page&page_id=store 的访问者被重定向到 website.com/index.php

提前致谢!

【问题讨论】:

  • 什么不起作用?是否要将查询字符串附加到重写的 url?
  • 您能否用文字说明您尝试重定向的(完整)网址是什么?我们可以在哪里与您编写的规则进行比较?
  • 哦刚刚意识到与我的一条规则相比,您不需要 / 尝试仅使用 RewriteRule ^index.php$ http://www.website.com/index.php? [L,R=301],受此规则 RewriteRule ^.*$ /index.php [NC,L] 的启发
  • 异常,我的购物车中有一个旧的php页面已转移到新地址。因此,为了保持搜索引擎页面排名,我想将告知页面重定向到新地址。我希望仍然访问 www.website.com/index.php?p=page&page_id=store 的访问者被重定向到 website.com/index.php

标签: .htaccess mod-rewrite redirect url-rewriting http-status-code-301


【解决方案1】:

用于重写 htaccess 文件中的规则的 URI 总是会去掉前导斜杠。所以不是/index.php,而是index.php,因为htaccess 文件本质上是每个目录的情况,类似于<Directory> 指令。所以你想要第二个选项,但没有前导斜杠:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^p=page&page_id=store$
# no slash --v
RewriteRule ^index.php$ http://www.website.com/index.php? [L,R=301]

【讨论】:

  • 谢谢乔恩。但这也没有用。我在 Pinnacle Cart 上运行页面,所以我想知道它是否与系统的细节有关。
  • @Lenz 我对您使用的系统一无所知,但如果您想将/index.php?p=page&page_id=store 重定向到/index.php,这就是您要使用的规则。如果在重定向之后,它仍然无法正常工作,显然重定向不是问题。这是an XY problem here吗?
  • 乔恩,不是真的。这就是我真正需要做的,将一个页面重定向到另一个页面。也许您可以建议更有效的方法来做到这一点而不使用 .htaccess 重定向?
  • @Lenz 这些规则正是这样做的,正如您所看到的:in a blank htaccess file in the document root of a new installation of apache,它完全符合您的要求。还有其他问题。例如,当您在服务器设置中真正需要AllowOverride All 时,您可能拥有AllowOverride None,这使得它忽略所有htaccess 文件。这就是为什么我怀疑这是一个“XY”问题,Y 已经解决,但 X 仍然存在。这里还有其他问题,不是 Y。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多