2016-02-23 2 views
1

Я использую фильтр Tuckey rewrite, чтобы сделать некоторые правила для сопоставления URL-адресов. Например, я получил следующее:Tuckey use-query-setting exclusion

<?xml version="1.0" encoding="utf-8"?> 
     <urlrewrite use-query-string="true"> 
     <rule enabled="true"> 
      <note>Do not process URLs targeting fonts</note> 
      <from>/*fonts*</from> 
      <to last="true">-</to> 
     </rule> 

     <rule enabled="true"> 
      <note>Do not process calls to images</note> 
      <from>/*images</from> 
      <to last="true">-</to> 
     </rule> 

     <rule enabled="true"> 
      <note>Process the rest of the links </note> 
      <from>/(.*)$</from> 
      <to type="passthrough">/</to> 
     </rule> 
    </urlrewrite> 

Что вышеприведенные правила позволяют мне сделать, чтобы PASSTHROUGH ничего с/шрифтов и/изображений и все остальное (неоднородная), перенаправляется обратно на главную страницу.

Я бы хотел, чтобы правило не обрабатывало какие-либо параметры запроса и пропускало его как есть. Я пробовал различные строки регулярных выражений, включая

 <rule enabled="true"> 
     <note>Do not process calls to /?*</note> 
     <from>^/(.*)?</from> 
     <to last="true">-</to> 
     <rule> 

но они не работали.

По существу, любой URL-адрес, например https://example.com/promo/def, переписывается обратно в/(который работает).

Что не работает, так это то, что https://example.com/promo/?def переписывается обратно в/и не проходит. Сейчас это не работает.

Заранее спасибо.

ответ

0

Вы должны явно указать фильтр tuckey, что вы хотите добавить строку запроса к целевому URI. В вашем <to> можно использовать атрибут qsappend.

<rule enabled="true"> 
     <note>Do not process calls to /?*</note> 
     <from>^/(.*)?</from> 
     <to qsappend="true" last="true">/</to> 
<rule> 

Если вы используете версию ниже 4.0, есть альтернативное решение с добавлением query-string к целевому URI в явном виде.

<rule enabled="true"> 
      <note>Do not process calls to /?*</note> 
      <from>^/(.*)?</from> 
      <to last="true">/?%{query-string}</to> 
<rule>