在URL中删除尾部斜杠在子目录中不起作用

时间:2012-03-13 19:00:27

标签: apache .htaccess url mod-rewrite

以下规则适用于删除网络根目录中所有页面的尾部斜杠:

RewriteRule ^(.+)/$ /$1 [L,R=301]

但是,放置在子文件夹中时不起作用。我也试过了:

RewriteRule (.*)/$ /$1 [L,R=301]

无济于事。会发生什么,重定向

http://example.com/testfolder/testpage/

http://example.com/testpage

我错过了什么?提前谢谢!

3 个答案:

答案 0 :(得分:1)

您是否尝试省略替换中的前导斜杠?

RewriteRule ^(.+)/$ $1 [L,R=301]

距离你所拥有的只是一箭之遥。目录重写的上下文(“in”/ testfolder)可能是问题的根本原因。

答案 1 :(得分:0)

你可以在变量中定义它,如果没有其他方法可以满足你的需要,也可以确保在你的php.ini中启用了重写mod。

答案 2 :(得分:0)

尾随斜杠修正由mod_dir完成。每个目录上下文中的重写将重新注入URL处理链并再次受到修复。

行为是可配置的。 E.g。

<Directory /path/to/wherever>
DirectorySlash Off
...
</Directory>

此上下文不仅是Directory:它是服务器配置,虚拟主机,目录,.htaccess。