mod_rewrite,尾随斜杠删除和当前目录
-
14-11-2019 - |
题
我已经仔细阅读了相关的问题,但我不能想到这个小警告。我见过的 golden 规则我看到通过 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
更新
最终,这是为了持态;附加或剥离尾随斜杠是合适的。我在尝试之间来回工作,无论是工作的方式,都没有成功。
追踪或剥离尾随斜杠是可接受的!
解决方案
嗯,我解决了它以附加:
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
指令。我会再去剥离。如果有一些可以更好的东西,请随时建议我的方法的替代品。
不隶属于 StackOverflow