虽然我已经看过一些关于这个主题的帖子,但我仍然遇到一些问题来实现我想要的。我的旧网址是这样的:
http://myhostname.com/offer/1234_Nice_Offer_Cool_Whatever_HEllyeah.htm
显然我想将它们重写为:
http://myhostname.com/offer/1234-nice-offer-cool-whatever-hellyeah.htm
这是我在 .htaccess 中尝试的代码。这可以很好地替换 URL 中没有任何目录的下划线:
RewriteCond %{REQUEST_URI} \.htm$ [NC]
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [E=underscores:Yes,N]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
因此,这对规则适用于 URL,例如:
http://myhostname.com/1234_Some_Section_hellyeah.htm
但是当我为 URL 尝试相同的代码时,例如:
http://myhostname.com/dir1/dir2/dir3/1234_Some_Offer_Or_Section.htm
然后,服务器进行一个无限循环(我想知道 [N] 标志......)基本上,我想知道这些规则的每个目录 URL 以何种方式影响以及为什么我会得到这个无限循环。谢谢!