我必须重写大量的网址 的 e.g: 来自:http://www.lespoulettes-bijoux.fr/produit2.asp?id_produit=8489 TO:http://www.lespoulettes-bijoux.fr/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html
所以我选择了RewriteMap,因为我的网址没有相同的ID。
所以我声明我的RewriteMap是这样的:
8489 http://www.lespoulettes-bijoux.fr/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html
在我的.htacess中:我想转换我的URL以将我的GET参数(id_produit)转换为内部id,以便在我的ReWriteMap中进行git。
问题:转换我的网址时出现错误500,转换后我不知道要切换的正确语法:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
RewriteRule (.*) /$1/id=%1 <== HERE 500 Internal Server Error
#RewriteRule ^/id_produit.asp/(.*)$ ${map_product:$1} [R]
要恢复:我想将“www.exemple.com/produit2.asp?id_produit=8489”切换到www.exemple.com/produit2.asp/id=8489 并将id发送到我的RewriteMap以重定向到正确的URL。
感谢您的帮助!
答案 0 :(得分:0)
这里的问题可能是:
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
RewriteRule (.*) /$1/id=%1 <== HERE 500 Internal Server Error
导致循环。重写引擎循环,所以在重写之后,结果将仍然匹配此规则,从而再次重写。尝试在末尾添加?
,以便删除查询字符串:
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
RewriteRule (.*) /$1/id=%1? [L]
另外,yuo需要删除正则表达式中的前导斜杠。请求URI在基于每个目录的规则中剥离了它们的主要斜杠(如在htaccess文件中),因此正则表达式需要如下所示:
RewriteRule ^id_produit.asp/(.*)$ ${map_product:$1} [R,L]
此规则需要先于您的其他规则。
答案 1 :(得分:0)
我几乎有解决方案:
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
RewriteRule (.*) /$1/%1? [L]
RewriteRule ^produit2.asp/(.*)$ ${map_product:$1} [R,L]
将我重定向到我的地图,但在我的网址中间添加/ var / www / les-poulettes-bijoux /:
/produit2.asp?id_produit=8489 的 =&GT; 强> http://www.lespoulettes-bijoux.fr/var/www/les-poulettes-bijoux/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html
如何在网址中删除无用的部分?