.htaccess重定向基于查询字符串并删除查询字符串

时间:2011-08-24 12:28:04

标签: string .htaccess redirect

我需要使用重定向指令将带有查询字符串的旧URL重定向到没有查询字符串的新URL。新URL取决于查询字符串的值。例如:

我想: http:// www.mydomain.com/product.php?id_product=AAA

将重定向到:

http:// www.mydomain.com/product-name-for-product-number-1

http:// www.mydomain.com/product.php?id_product=BBB

将重定向到:

http:// www.mydomain.com/this-is-different-product-name-for-product-number-2

提前致谢。

2 个答案:

答案 0 :(得分:1)

你可以做这种类型的重定向:

来自:http:// www.mydomain.com/product-name-for-product-number-AAA
至:http://www.mydomain.com/product.php?id_product = AAA& name_product = product-name

来自:http://www.mydomain.com/this-is-different-product-name-for-product-number-2
至:http://www.mydomain.com/product.php?id_product = BBB& name_product = this-is-different-product-name

你无法从htaccess文件中检索产品名称,唯一的方法是:

RewriteRule ^(.+)-for-product-number-(.+)$ ^product.php?id_product=$2&name_product=$1

或者你需要为你拥有的每个产品创建一个rewriterule(你可以从一个从db中检索所有产品id& name的脚本生成.htaccess):

RewriteRule ^product-name-for-product-number-1$ product.php?id_product=AAA
RewriteRule ^this-is-different-product-name-for-product-number-2$ product.php?id_product=BBB

答案 1 :(得分:0)

在我看来,您无法基于查询字符串执行重定向。所以你必须添加[QSA]标志并重定向到一个脚本,该脚本能够通过查询字符串重定向。