如何将没有任何slug的旧URL重定向到具有slug的新URL

时间:2012-12-31 12:10:10

标签: url mod-rewrite redirect rewrite

朋友们,这对我来说是一个复杂的问题。我已经研究了很多次,最后来到了你(希望我能得到解决方案)。我们有产品网址,如:

/product_info.php/products_id/75

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

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

但它也不是理想的网址。我希望这个:

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

现在的问题是 - 我们的旧网址(没有slu)被Google编入索引。我不知道如何将那些旧的重定向到新的。还有很多产品页面,所以我无法一个接一个地重定向它们。你们是天才。你能帮助我吗? (不要笑我)。 M不是开发人员。

1 个答案:

答案 0 :(得分:0)

您无法从/product_info.php/products_id/75的旧网址生成product_info.php?products_id = $ 2 = $ 1,因为他们没有产品名称(" slug&# 34。)

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

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

如果您希望旧的网址引导新的"漂亮的" 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();
}