IIS перенаправляет подкаталог в каталог уровня root с тем же именем - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу настроить перенаправление в IIS, которое перенаправляет все многоуровневые URL-адреса на моем сайте, оканчивающиеся на /blog, в подкаталог root -уровня, называемый /blog. Например, https://www.example.com/sub1/sub2/blog будет перенаправлять на https://www.example.com/blog.

. Я написал следующий шаблон регулярных выражений:

blog/?$

Проблема в том, что хотя это соответствует https://www.example.com/sub1/sub2/blog, оно также соответствует https://www.example.com/blog, который сам является URL, на который я перенаправляю. Следовательно, нажатие /sub1/sub2/blog перенаправляет на /blog, что само по себе совпадает и перенаправляет на /blog, et c., В результате чего он застревает в al oop, перенаправляя на себя.

Как сделать Я пишу шаблон регулярных выражений так, чтобы многоуровневый URL-адрес, заканчивающийся /blog, перенаправлял на страницу root -level /blog без соответствия самой страницы root -level?

1 Ответ

1 голос
/ 17 апреля 2020

Пожалуйста, попробуйте это

 <rule name="rewrite rule" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{URL}" pattern="^/(.+)/blog/?$" />
                    </conditions>
                    <action type="Redirect" url="https://www.example.com/blog" redirectType="Temporary" />
                </rule>

Или вы можете белый список

  <rule name="rewrite rule" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{URL}" pattern="blog/?$" />
                        <add input="{URL}" pattern="^/blog/?$" negate="true" />
                    </conditions>
                    <action type="Redirect" url="https://www.example.com/blog" redirectType="Temporary" />
                </rule>
...