web.config перезаписать URL подкаталога

У меня проблемы с использованием перенаправления URL-адреса моего сайта, вот структура моего сайта:

index.html
name-folder(folder)
name.html
   name2.html
   name3.html
     second-folder(folder)
     second.html
       second2.html
       second2.html

поскольку имя папки и page.html одинаковы, сервер не будет отображать страницу, если я не изменю имя папки.

но мой клиент хочет, чтобы URL был таким же, как и раньше, поэтому я попытался использовать web.config для переписывания правил URL, получил работу первого каталога, но второй подкаталог по-прежнему не работает.

пример: www.yourdomain.com/name-folder/name2 www.yourdomain.com/name/name2 (‹--- эта работа)

для подкаталога www.yourdomain.com/name-folder/second-folder/second (это обычный URL) www.yourdomain.com/name-folder/second/second2 (‹- когда я удаляю второй" -folder имя в URL-адресе работает, но если я удалю первую «-folder», работать не будет)

www.yourdomain.com/name/second/second2 (<---that's what I need, but it's not working currently.)

Мне нужно удалить все папки с именем "-folder" для соответствия старому URL-адресу.

Вот мой web.config, я попытался удалить переписывание имени папки подкаталога:

<!-- remove "-folder"in the child directory URL -->
<rule name="removesubfoldername" enabled="true" stopProcessing="true">
<match url="(.*)\/(.*)\/(.*)" negate="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" pattern="(.*)\.(.*)\.(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="\/{R:1}-folder\/{R:1}-folder\{R:2}" />
</rule>
<!--         end of re-write folder name -->

извините за всю путаницу, большое вам спасибо за помощь! Спасибо!


person madebymt    schedule 31.05.2018    source источник
comment
не могли бы вы ... поделиться структурой папок для справки?   -  person Bagus Tesa    schedule 31.05.2018
comment
@BagusTesa извините за это, просто обновите мой пост, большое вам спасибо за помощь.   -  person madebymt    schedule 31.05.2018
comment
извините за то, что подвел вас, мне не удается найти решение, поскольку IIS Url Rewrite выполняет только <rule> один раз по одному запросу (возможно, чтобы избежать цикла перезаписи, который вы можете найти на веб-сервере Apache), и он не может обрабатывать вложение группа захвата. я надеюсь, что кто-то еще может вам помочь. Извините..   -  person Bagus Tesa    schedule 31.05.2018
comment
кстати, я только что понял, раз уж у вас были name1.html, которые представляют name, почему бы вам не поместить его как index.html в папку name? это также для second.html ..   -  person Bagus Tesa    schedule 31.05.2018
comment
@Bagus Tesa большое спасибо за ваш комментарий, структура соответствует их старому сайту, и они хотят оставаться такими же. Кто-нибудь, помогите мне с этим, я поделюсь этим позже, я здесь. Я очень ценю вашу помощь !!! Ты обалденный!   -  person madebymt    schedule 01.06.2018


Ответы (1)


Вот рабочий файл web.config, который успешно удалил имя "-folder" из моей папки.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
    <rule name="extensionless" stopProcessing="true">
          <match url="(.*)\.html$" />
          <action type="Redirect" url="{R:1}" redirectType="Permanent" />
    </rule>
    <rule name="removeextension" enabled="true">
        <match url=".*" negate="false" />
    <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
    </conditions>
    <action type="Rewrite" url="{R:0}.html" />
    </rule>
<!-- remove sub sub "-folder"in the child directory URL -->
    <rule name="removesubfoldername" enabled="true" stopProcessing="true">
    <match url="(.*)\/(.*)\/(.*)" negate="false" />
    <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{URL}" pattern="(.*)\.(.*)\.(.*)" negate="true" />
    </conditions>
      <action type="Rewrite" url="{R:1}-folder\/{R:2}-folder\/{R:3}" />
     </rule>
     <!--         end of re-write folder name -->
<!-- remove "-folder"in the child directory URL -->
    <rule name="removefoldername" enabled="true" stopProcessing="true">
    <match url="(.*)\/(.*)" negate="false" />
    <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
    </conditions>
    <action type="Rewrite" url="{R:1}-folder\/{R:2}" />
    </rule>

<!--         end of re-write folder name -->
</rules>
</rewrite>
</system.webServer>
</configuration>
person madebymt    schedule 03.06.2018
comment
@pang Это рабочий файл web.config, который помог мне успешно удалить имя папки, извините за путаницу. - person madebymt; 06.07.2018