iis 7 url переписывает для результатов поиска

header_checks только позволяет Вам изменить ту же часть, которой Вы соответствуете в регулярном выражении, по крайней мере, это - то, что я вижу во всех конфигурациях.

Пример: Если Вы соответствуете регулярному выражению как это

/^Subject: ($1).*        / REPLACE Subject:

Только можно сменить ТЕМУ заголовка, Вы наклоняетесь', кладет часть предмета на другое место заголовка.

0
задан 21 November 2012 в 03:40
2 ответа

Я обнаружил гораздо более простой способ сделать то же самое (по крайней мере, на данный момент) с помощью с помощью специальной формы поиска в моей теме . Я уверен, что эта проблема возникнет в какой-то момент в будущем, но пока это единственный поиск нужного веб-сайта, он будет работать. Я полагаю, что есть способ разрешить несколько форм поиска так же, как вы можете иметь несколько страниц архива категорий (например, searchform- [slug] .php ), так что поэкспериментирую с этим позже.

Мне все еще интересно узнать, как что-то подобное может быть выполнено с помощью IIS, однако >> это решение << решило мою проблему.

0
ответ дан 4 December 2019 в 21:34

Мне жаль, что я сообщаю вам плохие новости, но ваше правило перезаписи ничего для вас не делает. Регулярное выражение в теге недопустимо. Прежде всего, строка запроса не является частью URL-адреса, и чтобы соответствовать ? в регулярном выражении, вы должны использовать \? , поскольку ? имеет специальное значение в регулярных выражениях.

А также синтаксис в вашем переписанном URL недействителен. Вы не можете использовать $ 1 для обратной ссылки, но должны использовать {R: x} (для обратных ссылок на URL) или {C: x} ( для обратных ссылок на условия), где x - номер части регулярного выражения, на которую вы хотите ссылаться.

К сожалению, это ' Мне не совсем понятно, чего вы пытаетесь достичь. Я предполагаю, что вы пытаетесь переписать все запросы, начинающиеся с s = в строке запроса, на / blog /? S = . В этом случае это правило должно делать следующее:

<rule name="Rewrite search queries" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="^s=([^&amp;.]*)&amp;?" />
    </conditions>
    <action type="Rewrite" url="blog/?s={C:1}" appendQueryString="false" />
</rule>

Для простоты s = должен быть первым параметром строки запроса.

Если вы хотите что-то сделать в противном случае отредактируйте свой вопрос и приведите еще несколько примеров URL-адресов и того, как их нужно будет переписать.

Обновление: Если вам нужна форма поиска для использования site.com/blog/?s = вместо site.com/?s= , почему бы просто не изменить HTML-код формы поиска? Просто измените действие этой формы.

Чтобы указанное выше правило работало вместе с правилами перезаписи WordPress, вам нужно немного изменить его. Прежде всего вам нужно удалить stopProcessing = "true" и для безопасности изменить url и добавить начальную косую черту. Возможно, в этом нет необходимости, просто на всякий случай.

Таким образом, правилом перезаписи станет:

<rule name="Rewrite search queries">
    <match url=".*" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="^s=([^&amp;.]*)&amp;?" />
    </conditions>
    <action type="Rewrite" url="/blog/?s={C:1}" appendQueryString="false" />
</rule>

И убедитесь, что это правило выше правил перезаписи WordPress. Правила WordPress должны быть последними.

1
ответ дан 4 December 2019 в 21:34

Теги

Похожие вопросы