Php “如何重新定位旧的”;“丑陋的”;搜索引擎优化友好的网址?

Php “如何重新定位旧的”;“丑陋的”;搜索引擎优化友好的网址?,php,mod-rewrite,seo,Php,Mod Rewrite,Seo,我刚开始重写mod_,需要为我的客户做点什么 假设我有www.mydomain.com/products.php?prod_id=32 此产品有一个部分(衣服)和一个名称(衬衫)。这些名称和部分是唯一的 在SEO友好的Url中,应该是www.mydomain.com/products/costs/shirt/ 我知道我可以创造 RewriteRule ^products/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ products.php?section=$1&

我刚开始重写mod_,需要为我的客户做点什么

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

此产品有一个部分(衣服)和一个名称(衬衫)。这些名称和部分是唯一的

在SEO友好的Url中,应该是www.mydomain.com/products/costs/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/costs/shirt/(在浏览器中更改)。如果不在url中插入id,我怎么做?是否可以在my.htaccess中调用“预处理”php文件,并重新创建“products.php?section=$1&name=$2”

有人对mod_rewrite的详细解释有很好的链接吗


谢谢

您可能会遇到比
mod_rewrite
能够妥善处理的问题更大的问题。您还可以使用PHP将重定向返回到浏览器。通过这种方式,您可以访问数据库,找出产品id 32是/Cloth/shirts/

您可能遇到了一个比
mod\u rewrite
能够正常处理的问题更大的问题。您还可以使用PHP将重定向返回到浏览器。通过这种方式,您可以访问您的数据库,以确定product_id 32是/Cloth/shirts/

除了在PHP中执行之外,没有其他选择

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


请记住设置永久移动的标题以进一步改进SEO:)

除了在PHP中执行之外,没有其他选择

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


记住设置永久移动的标题以进一步改进SEO:)

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

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

Apache?尝试.htaccess重定向。不需要修改

例如:
重定向301/oldpage.html

Apache?尝试.htaccess重定向。不需要修改

例如:
重定向301/oldpage.html

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

redirectToSeoUrl();

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

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

redirectToSeoUrl();

然后在其中一个include文件中编写一个redirectToSeoUrl函数,用于获取新的url和重定向。确保在将任何内容输出到浏览器之前先输入代码。

我想我理解了您的解决方案:创建一个与“products.php?prod_id=32”匹配的正则表达式,例如,它重定向到“fix_old_url.php?prod_id=32”。在fix_old_url.php中,我使用此id从查询中提取“衣服”和“衬衫”。在此之后,我重定向到php中的/costs/shirts/。从SEO的角度来看,使用PHP重定向而不是apache重定向有什么不同吗?浏览器(或搜索机器人)将从这两种重定向中看到相同的东西。你无法从服务器外部判断你是如何实现它的。我也在试图理解流程。。。假设它是一个用户。浏览器->products.php?prod_id=32->apache->fix_old_url.php->browser->apache->/products/costs/shirt/->products.php?prod_id=32。是吗?我不明白你的最后一步。为什么/products/costs/shirt/go-to-products.php?prod_id=32。这将再次开始整个循环,你将有一个无限循环。我以为您有一个/products/costs/shirt的本地处理程序。我想我理解您的解决方案:创建一个与“products.php?prod_id=32”匹配的正则表达式,例如,它重定向到“fix_old_url.php?prod_id=32”。在fix_old_url.php中,我使用此id从查询中提取“衣服”和“衬衫”。在此之后,我重定向到php中的/costs/shirts/。从SEO的角度来看,使用PHP重定向而不是apache重定向有什么不同吗?浏览器(或搜索机器人)将从这两种重定向中看到相同的东西。你无法从服务器外部判断你是如何实现它的。我也在试图理解流程。。。假设它是一个用户。浏览器->products.php?prod_id=32->apache->fix_old_url.php->browser->apache->/products/costs/shirt/->products.php?prod_id=32。是吗?我不明白你的最后一步。为什么/products/costs/shirt/go-to-products.php?prod_id=32。这将再次开始整个循环,你将有一个无限循环。我以为你有一个本地的处理程序来处理/products/cloth/shirt.Meh。我会给你一个使用表情符号的-1..htaccess比在服务器端mod_rewrite.Murvinlai配置占用更多的CPU资源,速度也更慢-这是一个更好的响应。任何保持低资源的做法都是好事。我会给你一个使用表情符号的-1..htaccess比在服务器端mod_rewrite.Murvinlai配置占用更多的CPU资源,速度也更慢-这是一个更好的响应。任何保持低资源的做法都是一件好事。谢谢你的投入。我希望避免在php文件中插入重定向逻辑,我认为Ned Batcheld的方法更好。谢谢谢谢你的意见。我想要一份工作