У нас было это старое правило в течение многих лет, которое принимает параметр URL, анализирует значение на стороне сервера и отображает последнюю страницу:
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="cities.php?id={R:1}" />
</rule>
Теперь у нас есть новое условие, когда мы хотим сделать что-то подобноено результаты и обработанный параметр URL-адреса должны работать по-разному.
<rule name="RewriteUserFriendlyURL2" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="detail-page-friendly.php?name={R:1}" />
</rule>
Первое правило принимает параметр и отображает страницу, используя этот параметр в качестве переменной.Второе правило принимает параметр и создает результат на основе записи базы данных.Каждый из них использует свою страницу PHP для создания конечной страницы.
Поскольку мы практически делаем одно и то же в каждом случае, необходимо выяснить, как разделить два правила.
Iрассматривал два разных триггера, таких как создание второго правила, связанного напрямую, например /pageName.php?name=something, который затем перезаписывает в / что-то и сначала устанавливает это правило с помощью "stopProcessing =" true "", чтобы не переходить кстарое правило, которое ищет просто слово (параметр) без имени страницы.Ссылка из второго случая была бы / cityName
Мысль заключается в том, что в одном случае мы ищем имя страницы (pageName.php), а затем перестаем смотреть на дальнейшие правила.Если это условие не выполняется, мы ожидаем, что второе правило выполнит свою работу, как это было в прошлом.
Возможно ли это (хорошая логика) или я должен рассмотреть какой-то другой метод?