Apache Url下划线到连字符重写失败超过十个下划线

Apache Url下划线到连字符重写失败超过十个下划线,apache,mod-rewrite,hyphen,Apache,Mod Rewrite,Hyphen,我在.htaccess中使用此代码将下划线重写为URL中的连字符 RewriteRule ^([^_]+)_(.+?\.html)$ $1-$2 [L,NC,E=underscores:Yes] RewriteCond %{ENV:REDIRECT_underscores} ^Yes$ RewriteRule ^([^_]+)$ /$1 [R=301,L] 不幸的是,如果有超过10个下划线,代码就会失败。我甚至可以一个接一个地将下划线改为连字符以减少数字,然后页面就会重定向。如 改变 到 如

我在
.htaccess
中使用此代码将下划线重写为URL中的连字符

RewriteRule ^([^_]+)_(.+?\.html)$ $1-$2 [L,NC,E=underscores:Yes]

RewriteCond %{ENV:REDIRECT_underscores} ^Yes$
RewriteRule ^([^_]+)$ /$1 [R=301,L]
不幸的是,如果有超过10个下划线,代码就会失败。我甚至可以一个接一个地将下划线改为连字符以减少数字,然后页面就会重定向。如 改变


如何更改代码以重定向任意数量的下划线

您的
limitinternalrecursion
参数设置为10。所以它在更换10次后就放弃了。Apache试图在重写规则中保护您不受无限递归的影响


LimitInternalRecursion的默认值为10

在问题中发布一个正确重写URL的示例。这可能是对文件名大小的限制。如果您达到了内部重写限制,此选项将正确重定向。默认情况下,该值设置为10。如果您是100%(检查、检查、再次检查)确保.htaccess稳定,则可以使用
[N]
标志。不过要非常小心。如果由于某种原因,重写从未停止过,您的Apache将崩溃,并且您的错误日志将非常庞大。您可能需要使用
[DPI]
(放弃路径信息)标志使其工作。如果我想一想,我可能会在以后发布一个答案。目前:请参阅。
http://www.astarmathsandphysics.com/igcse_maths_notes/igcse_maths_notes_cumulative_frequency_curves_quartiles_interquartile_range_and_median.html
http://www.astarmathsandphysics.com/igcse_maths_notes/igcse_maths_notes_cumulative_frequency_curves_quartiles_interquartile_range-and-median.html