mod_rewrite 在末尾附加斜杠,除非有问号

问题描述 投票:0回答:1

我喜欢在 URL 末尾强制使用结束斜杠,我在 .htaccess 文件中执行以下操作:

#append slash at end of URLs
RewriteCond %{REQUEST_URI} !(/$|\.|^$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

但是,如果我碰巧在查询字符串中放置了一些内容,例如:

,这会导致问题
https://www.mywebsite.com/regular/path/?page=22/

如何修改此重写,以便仅在 URL 中没有问号 (?) 的情况下附加此结尾斜杠,这样我就可以得到以下结果:

https://www.mywebsite.com/regular/path/?page=22
regex .htaccess mod-rewrite
1个回答
0
投票

那么,您需要测试请求的 URL 是否有查询字符串。这可能是一个简单的方法:

#append slash at end of URLs
RewriteEngone on
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{REQUEST_URI} !(/$|\.|^$)
RewriteRule ^ %{REQUEST_URI}/ [R=301,L,QSA]

但是我想知道如果有查询字符串,为什么您不需要尾随斜杠。在我看来,这打破了逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.