我喜欢在 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
那么,您需要测试请求的 URL 是否有查询字符串。这可能是一个简单的方法:
#append slash at end of URLs
RewriteEngone on
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{REQUEST_URI} !(/$|\.|^$)
RewriteRule ^ %{REQUEST_URI}/ [R=301,L,QSA]
但是我想知道如果有查询字符串,为什么您不需要尾随斜杠。在我看来,这打破了逻辑。