【问题标题】:Redirecting an already redirected page重定向已经重定向的页面
【发布时间】:2011-05-04 14:55:55
【问题描述】:
RewriteRule ^teamstore/(.*)/$ /teamproduct.php?teamproduct=$1&products=true [NC,L]
RewriteRule ^teamstore-(.*)/$ /teamproduct.php?teamproduct=$1&products=true [NC,L]

情况是这样的。我们已经重写了这些 url,但我们想更改这些页面的格式,以便它们用连字符而不是斜杠分隔。

我尝试了重定向匹配,但这在 url 的末尾添加了额外的 php 值参数。结果是

RedirectMatch 301 /teamstore/(.*) http://www.domainname.com/teamstore-$1/

这是结果...

teamstore-valuehere//?teamproduct=2352323&productes=true

我希望输入原始地址 teamstore/info/ 的人被定向到 teamstore-info/ - 关于如何完成此操作的任何想法?

主要原因是为了避免 Google 搜索结果中现有链接出现重复内容问题。

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting url-routing


    【解决方案1】:

    规则的顺序可能很重要,但如果您出于 SEO 原因想要 301 重定向初始请求,那么我会将您的 RewiteRules 更改为以下内容。

    RewriteRule ^teamstore/(.*)/$ teamstore-$1/ [R=301,L]
    RewriteRule ^teamstore-(.*)/$ /teamproduct.php?teamproduct=$1&products=true [NC,L]
    

    这将首先将 teamstore/info/ 转换为 teamstore-info/ 并发送相应的 301 响应。在第二次通过时,它将重定向到您想要的 php。

    请注意,就性能而言,这并不理想。然而,它确实实现了让 Google 满意的目标。

    【讨论】:

    • 这不是重定向初始重定向。它显示 teamstore/ 没有任何重定向或任何 php 数据。我正在使用 wordpress,所以这可能是某些后端问题的结果,我现在要仔细检查一下,但我认为没有什么不合适的。 - 我需要重新启动 apache 吗?我的假设是否定的,因为进行了更改,但它们不是预期的更改,哈哈。
    • 我更新了代码,再试一次。然而,WordPress 有它自己的 ReWriteRules。您可能需要使用它们。
    • 谢谢 - 我们开发了一个自定义插件,因此我们不使用 wordpresses 规则,但是 .htaccess 文件,我会试一试。再次感谢!
    • 当我添加另一个斜线时 - 我让它工作了 - RewriteRule ^teamstore/(.*)/$ teamstore-$1/ [R=301,L] RewriteRule ^teamstore-(.*)/ $ /teamproduct.php?teamproduct=$1&products=true [NC,L]
    • 对不起,是的,你的尾部斜杠是必需的,我没有把它放回去。我已经更新了我的答案。谢谢。
    猜你喜欢
    • 2015-07-01
    • 2015-10-12
    • 2013-10-13
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2023-03-20
    • 2011-06-19
    相关资源
    最近更新 更多