Web.config регулярное выражение получить разделы URL
Я пытаюсь создать правило регулярного выражения для использования в web.config Mautic, так как ничего не было предоставлено, и я не смог найти ни одного рабочего варианта.
Я получил пример с веб-сайта, который перечисляет эту опцию:
^([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)$
Который прекрасно работает с 2-мя блоками, такими как:
http://example.com/s/dashboard
но мне также нужно работать с 3 и 4 блоками URL, как:
http://example.com/s/pages/edit/1?_=1457451067112&mauticUserLastActive=1&mauticLastNotificationId=2
Мне удалось создать частичное рабочее регулярное выражение:
(\/[a-z0-9_-]+)
Но он не будет работать на web.config, он дает мне 404, в чем может быть проблема? Как видите, у меня есть "рабочий" пример на RegExr
1 ответ
Я сделал это так
<rules>
<rule name="Rewrite to index.php">
<match url="^([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)$" />
<conditions>
<add input="{URL}" negate="true" pattern="index.php(.*)" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}/{R:2}" />
</rule>
<rule name="Rewrite to index.php 2">
<match url="^([_0-9a-zA-Z-]+)?(\/[_0-9a-zA-Z-]+)?$" ></match>
<conditions>
<add input="{URL}" negate="true" pattern="index.php(.*)" ></add>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" ></add>
</conditions>
<action type="Rewrite" url="index.php/{R:1}/{R:2}" ></action>
</rule>
<rule name="Rewrite to index.php 3">
<match url="^([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)$" ></match>
<conditions>
<add input="{URL}" negate="true" pattern="index.php(.*)" ></add>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" ></add>
</conditions>
<action type="Rewrite" url="index.php/{R:1}/{R:2}/{R:3}" ></action>
</rule>
<rule name="Rewrite to index.php 4">
<match url="^([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)$" ></match>
<conditions>
<add input="{URL}" negate="true" pattern="index.php(.*)" ></add>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" ></add>
</conditions>
<action type="Rewrite" url="index.php/{R:1}/{R:2}/{R:3}/{R:4}" ></action>
</rule>
<rule name="Rewrite to index.php 5">
<match url="^([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)$" ></match>
<conditions>
<add input="{URL}" negate="true" pattern="index.php(.*)" ></add>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" ></add>
</conditions>
<action type="Rewrite" url="index.php/{R:1}/{R:2}/{R:3}/{R:4}/{R:5}" ></action>
</rule>
</rules>
Надеюсь, поможет