【问题标题】:Rewrite URL with RewriteMap Error使用 RewriteMap 错误重写 URL
【发布时间】:2015-08-13 16:32:51
【问题描述】:

我必须重写大量的 URL 例如: 发件人:http://www.lespoulettes-bijoux.fr/produit2.asp?id_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) 转换为一个内部 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.exemple.com/produit2.asp/id=8489 并将 id 发送到我的 RewriteMap 以重定向到正确的 URL。

感谢您的帮助!

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting url-redirection rewritemap


    【解决方案1】:

    这里的问题大概是:

    RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
    RewriteRule (.*) /$1/id=%1 <== HERE 500 Internal Server Error
    

    这会导致循环。重写引擎循环,因此在重写之后,结果将仍然匹配此规则,从而再次被重写。尝试在末尾添加?,以便删除查询字符串:

    RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$
    RewriteRule (.*) /$1/id=%1? [L]
    

    此外,您需要删除正则表达式中的前导斜杠。请求 URI 的前导斜杠在基于每个目录的规则中(如在 htaccess 文件中)被剥离,因此正则表达式需要如下所示:

    RewriteRule ^id_produit.asp/(.*)$ ${map_product:$1} [R,L]
    

    并且这条规则需要在你的其他规则之前。

    【讨论】:

    • 我用 htacess 测试仪测试过 (htaccess.madewithlove.be) 但链接不匹配。我真的不明白它缺少什么。谢谢乔恩·林。
    【解决方案2】:

    我差不多有办法了:

    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

    如何删除网址中无用的部分?

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2016-11-30
      • 2010-12-16
      相关资源
      最近更新 更多