对于超过十个下划线,url强调连字符重写失败

时间:2013-12-31 12:05:52

标签: apache mod-rewrite hyphen

我在.htaccess

中使用此代码将网址中的下划线重写为连字符
RewriteRule ^([^_]+)_(.+?\.html)$ $1-$2 [L,NC,E=underscores:Yes]

RewriteCond %{ENV:REDIRECT_underscores} ^Yes$
RewriteRule ^([^_]+)$ /$1 [R=301,L]

不幸的是,如果有超过十个下划线,代码将失败。我甚至可以将下划线逐个更改为连字符以减少数量,然后页面会重定向。例如 变化

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

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

1 个答案:

答案 0 :(得分:0)

您的limitinternalrecursion参数设置为10.因此在10次替换后放弃。 Apache试图保护您免受重写规则中的无限递归。

http://httpd.apache.org/docs/2.2/mod/core.html#limitinternalrecursion

LimitInternalRecursion的默认值为10