我已经仔细阅读了相关的问题,但我不能想到这个小警告。我见过的 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指令。我会再去剥离。如果有一些可以更好的东西,请随时建议我的方法的替代品。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top