mod_rewrite,尾部删除斜杠和当前目录

时间:2011-05-16 17:51:06

标签: mod-rewrite directory-structure trailing-slash

我已经仔细阅读了相关的问题,但我无法想象这一点。我通过 mod_rewrite 看到的尾随删除斜杠的 golden 规则是:

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

这一切都很好,但是如果存在,它会剥离前面的目录结构。因此,如果我的应用程序引导程序在托管路径的根目录下运行,则它可以工作,但如果在子目录中则不行:

  

http://localhost/path/to/application/pretty/query/string/

     

变为

     

http://localhost/pretty/query/string 注意;斜杠被剥离,但目录也是

如何保留当前目录位置,因此前面的示例返回预期的:

http://localhost/path/to/application/pretty/query/string


更新

最终,这是为了保持一致;附加剥离尾部斜杠是合适的。我正在尝试两种方法之间来回工作,但没有成功。

可以接受追加或删除尾部斜杠的答案!

1 个答案:

答案 0 :(得分:0)

好吧,我解决了它的追加:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /_dev/_projects/mf_frame

RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1/ [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) ?routePath=$1 [L,QSA]

我错过了RewriteBase指令。我还有另外一个去剥离。如果可以做得更好,请随意建议我的方法的替代方案。