2013-10-28 2 views
4

Я пытаюсь удалить расширение html с страниц с помощью web.config. Ниже приведен код, я использую в файле web.configУдаленное расширение HTML с веб-конфигурацией постоянно

<rewrite> 
    <rules> 
    <rule name="rewrite html"> 
     <match url="(.*)$" /> 
     <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
     <add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).html" /> 
     </conditions> 
     <action type="Rewrite" url="{R:1}.html" /> 
    </rule> 
    </rules> 
</rewrite> 

он работает нормально и удаления расширения HTML, однако, как представляется, 2 проблемы здесь:

  1. Когда я поставил «слэш» он не работает и не дает мне ошибок. Например: http://example.com/my-page/ теперь он не будет работать, но я ставлю http://example.com/my-page то он будет работать хорошо, так что я хотел бы им обоим работать

  2. Другая проблема заключается в том, что .html страницы по-прежнему открываются. Например, если я открываю страницу как http://example.com/my-page.html, она также работает, но я хочу, чтобы она автоматически конвертировалась в http://example.com/my-page, я знаю, что могу использовать 301 переадресацию для этого, но это не сработает, так как здесь есть много файлов, поэтому мне нужно используйте разные 301 правила для разных URL-адресов.

Прошу совета.

Благодаря

ответ

12

URLRewrite 2,0 правило (вставить эту часть внутри system.webServer узла), который заменяет .html из URL:

<rewrite> 
    <rules> 
     <rule name="Hide .html ext"> 
      <match ignoreCase="true" url="^(.*)"/> 
      <conditions> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> 
       <add input="{REQUEST_FILENAME}.html" matchType="IsFile"/> 
      </conditions> 
      <action type="Rewrite" url="{R:0}.html"/> 
     </rule> 
     <rule name="Redirecting .html ext" stopProcessing="true"> 
      <match url="^(.*).html"/> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="{URL}" pattern="(.*).html"/> 
      </conditions> 
      <action type="Redirect" url="{R:1}"/> 
     </rule> 
    </rules> 
</rewrite> 
0

Я знаю, что это почти год последний, но я буду стараться. Я не уверен, я понимаю вашу проблему правильно, но если я делаю, я просто использовать

<system.webServer> 
    <caching> 
     <profiles> 
     <remove extension=".php" /> 
     <remove extension=".html" /> 
     <add extension=".html" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="23:59:59" varyByQueryString="*" /> 
     <add extension=".php" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" varyByQueryString="*" /> 
      </profiles> 
      </caching> 
      <directoryBrowse enabled="false" /> 
      <defaultDocument> 

то остальные заявления о закрытии, которые вы используете.

Смежные вопросы