1

朋友们,这对我来说是一个复杂的问题。我对此进行了多次研究,最后找到了您(希望我能得到解决方案)。我们的产品 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

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

4

1 回答 1

0

您无法从 /product_info.php/products_id/75 的旧 URL 生成 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();
}
于 2013-01-01T04:23:24.083 回答