0

我已经仔细阅读了相关的问题,但我无法弄清楚这个小小的警告。我看到的通过mod_rewrite删除尾部斜线的黄金法则是:

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


更新

最终,这是为了一致性。附加去除尾部斜杠是合适的。我在试图获得任何一种工作方法之间来回工作,但没有成功。

附加或去除尾部斜杠的答案是可以接受的!

4

1 回答 1

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指令。我会再去脱衣。如果有可以做得更好的事情,请随时提出我的方法的替代方案。

于 2011-05-16T18:37:40.707 回答