微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 URL 重写规则会导致 apache 上的重定向过多?

如何解决为什么我的 URL 重写规则会导致 apache 上的重定向过多?

我尝试更改我的产品的 URL,因此 hostproduct-identifier间的 categories 将不再显示: >

来自: www.myexampleshop.de/pants/shortpants/123456790-exampleshortpants

致: www.myexampleshop.de/123456790-exampleshortpants

我的重写规则是正确构建 URL:

RewriteEngine on
RewriteRule ([\/a-z]+)(?=\d{10}-)(.+) $2$3 [R]

但是我的浏览器告诉我我有太多的重定向。这怎么可能?

解决方法

您的正则表达式只有捕获组 1 和 2,但您引用了 $2 和 $3。因此,没有进行任何替换,您一遍又一遍地重定向回自己。我还应该补充一点,您的示例 URL 只有 9 位数字,并且永远不会匹配正则表达式。

如果您要进行重定向,则可以使用 RedirectMatch 指令,该指令将 URL 的 path 与正则表达式匹配,并且仅当匹配时才应用重写规则,而不是的 RewriteRule 指令。我已经“调整”了你的正则表达式:

RewriteEngine on
RewriteMatch "^([/a-zA-Z]+)(\d{10}-.+)$" "/$2"

如果您不想使用重定向,请使用 RewriteRule

RewriteEngine on
RewriteRule %{REQUEST_URI} "^([/a-zA-Z]+)(\d{10}-.+)$" "/$2" [L]

如果您正在使用 RewriteRule 指令(用于重定向或其他),您通常会添加 [L] 标志,因为您可能不想应用任何额外的重写规则。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。