我是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的详细解释的良好链接?
谢谢!
答案 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