微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.htaccess如果在最后一个斜杠之前没有扩展名,则添加斜杠

如何解决.htaccess如果在最后一个斜杠之前没有扩展名,则添加斜杠

我这里有一个代码,该代码通过在末尾添加斜杠来重写url。 条件:

  1. 没有文件扩展名
  2. 最后没有斜杠

RewriteEngine On
RewriteCond %{REQUEST_URI} !\..*$
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/Brian/$1$2/ [L,R=301]

如果网址是:

http://localhost:8080/Brian/test123 -> http://localhost:8080/Brian/test123/ - CORRECT
http://localhost:8080/Brian/test123. -> http://localhost:8080/Brian/test123. - CORRECT
http://localhost:8080/Brian/test123.awd -> http://localhost:8080/Brian/test123.awd - CORRECT

http://localhost:8080/Brian/test123.awd/a -> http://localhost:8080/Brian/test123.awd/a - THIS IS MY PROBLEM

我想要这样的结果。

http://localhost:8080/Brian/test123.awd/a/

请帮助。谢谢!

解决方法

RewriteCond %{REQUEST_URI} !\..*$

因此,似乎您只需要查看 last 路径段,而不需要查看URL路径中的 anywhere 。 (顺便说一句,上面的 CondPattern !\.相同)

例如:

RewriteCond %{REQUEST_URI} !\.[^/]*$

[^/]*将除斜杠之外的任何字符都匹配到字符串的末尾,因此它将仅匹配没有斜杠的最后一个路径段。


旁边:看来您的.htaccess文件位于/Brian子目录中。您可以对此进行“简化”,而不必在RewriteRule substitution 中明确声明子目录。例如:

RewriteCond %{REQUEST_URI} !\.[^/]*$
RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]

RewriteRule 模式 !/$只是检查所请求的URL路径是否尚未以斜杠结尾(而不是捕获在斜杠未出现斜杠时捕获的所有内容)结束)。 REQUEST_URI服务器变量包含完整的(相对于根,以斜杠开头)URL路径,我们已经确定它不是以斜杠结尾。

如果您要重定向到相同的方案+主机名,则不必在 substitution 字符串中包含此名称。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。