我已经仔细阅读了相关的问题,但我无法想象这一点。我通过 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
更新
最终,这是为了保持一致;附加或剥离尾部斜杠是合适的。我正在尝试两种方法之间来回工作,但没有成功。
可以接受追加或删除尾部斜杠的答案!
答案 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
指令。我还有另外一个去剥离。如果可以做得更好,请随意建议我的方法的替代方案。