【问题标题】:How to redirect old URL that hasn't any slug to new one which has a slug如何将没有任何 slug 的旧 URL 重定向到有 slug 的新 URL
【发布时间】:2012-12-31 12:10:10
【问题描述】:

朋友们,这对我来说是一个复杂的问题。我对此进行了多次研究,最后找到了您(希望我能得到解决方案)。我们的产品 URL 如下:

/product_info.php/products_id/75

根据 SEO,我想要关键字丰富的 URL,所以我们在 products.php 文件中添加了一个 slug 并将 URL 修改为:

/product_info.php/products_id/75/product-title

但它也不是一个理想的 URL。我想要这样:

domainname.com/products/product-title/75

我在 .htaccess 文件中所做的更改如下-

RewriteRule ^products/([A-Za-z0-9-]+)/([0-9]{2})/?$ product_info.php?products_id=$2=$1 [L]
RedirectMatch 301 ^/product_info.php/products_id/([0-9]{2})/([A-Za-z0-9-]+)$ http://www.livevaastu.com/products/$2/$1

现在的问题是 - 我们的旧网址(没有 slug)已被 Google 索引。而且我不知道如何将那些旧的重定向到新的。还有很多产品页面,所以我无法一一重定向。你们真是天才。你能帮我怎么做。 (没有嘲笑我)。 M 不是开发人员。

【问题讨论】:

    标签: url mod-rewrite redirect rewrite


    【解决方案1】:

    您无法从旧网址 /product_info.php/products_id/75 生成 product_info.php?products_id=$2=$1,因为它们没有产品标题(“slug”)。

    一方面 product_info.php?products_id=$2=$1 没有任何意义。那是错字吗?该查询字符串中的键/值对是什么?这应该类似于 products_id=$1&product_title=$2 其中从 mod_rewrite 匹配中派生的每个“值”都被分配给一个已知的“键”,您可以在 $_GET 或 $_REQUEST 中使用它来查找值。

    根据讨论,编辑以帮助您实现我认为您在此处尝试实现的目标:

    如果您希望旧 URL 指向新的“漂亮” URL,则需要使用 PHP 来执行此操作。如前所述,URL 中根本没有足够的信息来发明产品名称。但是您可以很容易地在每个页面的顶部(即在头文件中)放置一些东西来查看“标题” $_GET 参数是否存在(一旦您清理了双等号并将其替换为正确的键/值对)。这可能看起来像:

    <?php
    if( !isset( $_GET['product_title'] ) ) {
    
       // Code here to look up $product_title from the $product_id, presumably in a DB
    
       header("HTTP/1.1 301 Moved Permanently");
       header("Location: /products/$product_title/$product_id");
       exit();
    }
    

    【讨论】:

    • 感谢您的信息,德文。实际上,“products_id=$2=$1”中的密钥对包含 slug 和 id。正如我提到的,我希望 URL 看起来像 domainname.com/products/product-title/75(为此我在上面给出的 .htaccess 文件中添加了一些行)。但令人头疼的是——我无法将旧的(没有 slug)重定向到这些新的 Url。如果它造成任何混乱,请更新我。问候。
    • 我的困惑是你连续有两个等号。这里没有键/值对。我希望 products_id=$1&product_title=$2 因为它实际上会有键/值对。而且您不需要将旧 URL 重定向到新 URL。那没有任何意义。您需要将旧 URL 重定向到他们曾经重定向到的新位置——正确的内容。
    • 感谢德文,帮助很大。我会检查并回复你。
    • 嗨,Devin,很抱歉耽搁了太多时间,非常感谢您的帮助。我们在代码中使用了键值,并且还能够使用带有 slug- (/product_info.php/products_id/75 到 livevaastu.com/products/vaastu-solution-for-students/75) 的 URL 重定向每个页面。希望谷歌方面没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2015-07-28
    • 2019-08-15
    • 2017-03-15
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多