需要帮助来重写URL

时间:2015-08-24 13:33:37

标签: regex url url-rewriting

我正在编写一些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'))");
    }

我的网址可能如下:

  1. 名称/语句/ ID

  2. 名称/语句/ ID /

  3. 名称/语句/ ID.jpg

  4. 我为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匹配。

0 个答案:

没有答案