我在ServerFault上看到过这个前面的问题 ,我想要类似的东西 ,但我不知道如何完成它。
我想要的是从永久链接中删除所有的斜杠 ,除了域名后面的那个。 例如:
http://www.muycomputerpro.com/Actualidad/Especiales/La-Ciudad-Eficiente-Netapp
将被redirect到
http://www.muycomputerpro.com/ActualidadEspecialesLa-Ciudad-Eficiente-Netapp
我需要它来纠正我的WordPress博客下的Apache Web服务器上的一些404错误。 那么,什么是正确的重写规则?
由于RewriteRule从path开始(所以我们不需要担心域),你可以说的是,你想删除除第一个之外的所有斜杠,或者,当没有开始之前删除一个斜杠串。
在正则expression式意味着使用负面的后台,像这样:
(?<!^)/
(?<! … )是否定后置语法, ^表示string的开始。
所以在configuration中看起来像这样:
RewriteRule (?<!^)/ $1 [L,R=301]
这里有一点是一个猜测是$1来表示空string – 我以前没有用mod_rewrite这样做,我找不到任何解释如果有一个“正确”的方式来replace空string,但在其他正则expression式引擎中,使用未使用的返回引用将导致空string,所以应该罚款。 (如果没有,我会看看是否""工作"" )。
哦,部分是用逗号分隔的重写选项列表。 L表示最后 – 说不要处理更多的规则(通常这是所期望的行为), R=301是301(永久)redirect(指示蜘蛛用新URL更新logging)。 更多的细节在这里重写选项 。