我必须重写大量的URL,例如::,从:produit=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
所以我选择做一个RewriteMap,因为我的URL没有相同的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)转换成一个interal id,然后在我的ReWriteMap中进行git。
问题是:在转换我的URL时,我有一个错误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.Exple.com/produit2.asp/ id =8489,并将id发送到我的RewriteMap以重定向到正确的URL。
谢谢你的帮忙!
发布于 2015-08-12 14:51:31
这里的问题可能是:
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需要删除regex中的前导斜线。在基于每个目录的规则(如htaccess文件中)中,请求URI的前导斜线被去掉,因此regex需要如下所示:
RewriteRule ^id_produit.asp/(.*)$ ${map_product:$1} [R,L]和这个规则需要在其他规则之前。
发布于 2015-08-13 08:32:51
我几乎有了解决办法:
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
RewriteRule (.*) /$1/%1? [L]
RewriteRule ^produit2.asp/(.*)$ ${map_product:$1} [R,L]将我重定向到我的地图,但是在我的URL中间添加/var/www/les-poulettes-bijoux/:
/produit2.asp?id_produit=8489 => 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
但我需要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
我如何删除我的URL中无用的部分?
https://stackoverflow.com/questions/31968163
复制相似问题