gpt4 book ai didi

regex - .htaccess 如果在最后一个尾部斜线之前没有扩展名,则添加尾部斜线

转载 作者:行者123 更新时间:2023-12-02 19:09:45 25 4
gpt4 key购买 nike

我这里有一个代码,它通过在末尾添加尾部斜杠来重写 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} !\..*$

因此看起来您只需要查看最后 路径段,而不是 URL 路径中的任何地方。 (顺便说一句,上面的 CondPattern!\. 是一样的)

例如:

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

[^/]* 匹配字符串末尾除斜杠以外的任何字符,因此它只会匹配最后没有跟斜杠的路径段。


旁白:您的 .htaccess 文件似乎位于 /Brian 子目录中。您可以稍微“简化”一下,避免必须在 RewriteRule 替换 中显式声明子目录。例如:

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

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

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

关于regex - .htaccess 如果在最后一个尾部斜线之前没有扩展名,则添加尾部斜线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64478820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com