我正在编写一些URL重写规则,如下所示:
if (self::$searchable[$field]['type'] == 'LIKE') {
$result = $result->whereRaw("lower(translate($field_where, ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', ' -aaaaaeeeeiiiiooooouuuucc'))
LIKE lower(translate('%$value%', ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', ' -aaaaaeeeeiiiiooooouuuucc'))");
} else {
$result = $result->whereRaw("lower(translate($field_where, ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', ' -aaaaaeeeeiiiiooooouuuucc'))
= lower(translate($value, ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', ' -aaaaaeeeeiiiiooooouuuucc'))");
}
我的网址可能如下:
名称/语句/ ID
名称/语句/ ID /
名称/语句/ ID.jpg
我为3个以上的网址编写了3条规则。我需要3个完美的正则表达式来映射这3个URL以进行重写。
网址1&除正斜杠外,2相同(映射到相同位置)。
网址1在ID之后不得包含任何内容。如果用户在id之后附加任何字符串,则regex不应验证并为此错误的URL返回false。
URL 2可能在ID之后有正斜杠但在最后一个正斜杠后不应包含任何内容。例如:用户键入错误的网址:<rewrite>
<rules>
<rule name="Rewrite to html" enabled="true" stopProcessing="true">
<match url="(.*)\/(.*)\/(.*)\/$" ignoreCase="true" />
<action type="Rewrite" url="Images/{R:1}/{R:2}/{R:3}/{R:3}.html" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
</rule>
<rule name="Rewrite to html image" enabled="true" stopProcessing="true">
<match url="(.*)\/(.*)\/(.*)(!\.gif|!\.png|!\.jpg|!\.jpeg)\/?$" ignoreCase="true" />
<action type="Rewrite" url="Images/{R:1}/{R:2}/{R:3}/{R:3}.html" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
</rule>
<rule name="Rewrite to image" enabled="true" stopProcessing="true">
<match url="(.*)\/(.*)\/(.*)(\.gif|\.png|\.jpg|\.jpeg)$" ignoreCase="true" />
<action type="Rewrite" url="Images/{R:1}/{R:2}/{R:3}/{R:3}{R:4}" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="true" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
,则它不应与任何重写规则匹配。但是,如果用户在浏览器网址中键入Name/statement/ID/ABC
,则它应与规则匹配。
网址1&amp;除了文件扩展名(Name/statement/ID/
)之外,图3中的显示几乎相同。因此,URL必须在id之后具有任何有效的图像扩展名或html扩展名,然后它应该与规则3匹配。