RewriteRule ^+/ $ $ 1在重写规则htaccess中是什么意思 正则表达式 ^(.+)/$在^

问题描述

我发现相关但不完全相同。如果有人可以解释为什么使用此加号(+)。

我发现了^(.*)这个东西,但没有找到^(.+)

我需要更多说明为什么要使用此加号。那是什么意思

RewriteRule ^(.+)/$ $1

解决方法

这个问题有两个方面:

  1. 正则表达式(regex)^(.*)^(.+)的解释

  2. RewriteRule的{​​{1}}指令中使用正则表达式。

tl; dr 是的,两个正则表达式的含义不同。但是,在.htaccess的{​​{1}}指令中使用一个或另一个并没有真正的区别。


正则表达式

RewriteRule

.htaccess^(.+)/$ ,分别表示前一组的“ 0或更多”和“ 1或更多”。

*(点)是一种特殊的元字符,可以匹配任何字符(换行符除外)。

因此,+匹配0个或多个“任何字符”,而.匹配1个或多个“任何字符”。 (然后必须在其后加上斜杠。)

.*.+ anchors ,分别声明字符串的“开始”和“结束”,因此^匹配URL路径以斜杠结尾,捕获URl路径 末尾斜杠的一部分。 $前缀是严格可选的,因为正则表达式默认情况下是贪婪的。

^(.+)/$^

RewriteRule ^(。+)/ $ $ 1

RewriteRule中使用时,在这里使用.htaccess还是.htaccess都没有关系,因为*(斜杠)将永远不会出现在URL的开头, + 模式匹配的路径。 (在应用/ 模式之前,URL路径开头的多个斜杠均已被解析。)

但是,如果此指令是在 server virtualhost 上下文中使用的(即,在服务器配置中不是RewriteRuleRewriteRule容器中),则您需要 使用.htaccess,以防止在URL路径的开头(当请求 root 目录时)斜杠被匹配。

但是...该指令本身并不完全正确-缺少某些部分。这可能应该是外部重定向(但缺少<Directory>标志),因此,将需要一个+指令(除非将 substitution 字符串修改为包括斜杠前缀)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...