如何将旧的“丑陋”网址重定向到seo友好的网址?

时间:2009-10-29 00:27:34

标签: php mod-rewrite seo

我是mod_rewrite的新手,需要为我的客户做点什么。

假设我有www.mydomain.com/products.php?prod_id=32。

此产品有一款(衣服)和一个名字(衬衫)。这些名称和部分是独一无二的。

在SEO友好的网址中,它应该是www.mydomain.com/products/clothes/shirt /.

我知道我可以创建

RewriteRule ^products/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ products.php?section=$1&name=$2

我能做到,而且有效。但是我想让进入www.mydomain.com/products.php?prod_id=32的人被重定向到www.mydomain.com/products/clothes/shirt/(在浏览器中更改)。如果不在我的网址中插入ID,我怎么能这样做?是否可以在我的.htaccess中调用“预处理”php文件,并重新创建“products.php?section = $ 1& name = $ 2”?

任何人都有关于mod_rewrite的详细解释的良好链接?

谢谢!

5 个答案:

答案 0 :(得分:4)

您可能遇到的问题比mod_rewrite可以优雅处理的问题更严重。您还可以使用PHP将重定向返回到浏览器。这样你就可以访问你的数据库,以确定product_id 32是/ clothes / shirts /

答案 1 :(得分:3)

除了在PHP中执行此操作外,我没有其他选择。

您可以在products.php页面的顶部添加一些内容,用于检查URL($_SERVER['REQUEST_URI'])以查看它是否包含products.php - 如果是,则重定向此人。在重定向之前,您需要查询数据库以找出产品类别和名称。

请记住设置Moved Permanently标头以进一步改进SEO:)

答案 2 :(得分:0)

浏览器可以通过“Referer”标题字段传递此数据。您可以进行该URL并查看get参数。如果我没记错的话,并非所有浏览器都支持此功能。

答案 3 :(得分:0)

在products.php(或任何你要重定向的页面)的顶部,你可以进行函数调用

redirectToSeoUrl();

然后在你的一个include文件中写一个redirectToSeoUrl函数,它获取新的url并重定向。确保在将任何内容输出到浏览器之前放置代码。

答案 4 :(得分:-2)

阿帕奇?尝试.htaccess重定向。不需要mod_rewrite。

实施例: 重定向301 /oldpage.html http://www.example.com/newpage.html