Удалить расширение HTML с web config навсегда
Я пытаюсь удалить расширение html со страниц с помощью web.конфиг. Ниже приведен код, который я использую в интернете.файл config
<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 проблемы:
когда я ставлю "Слэш", он не работает и дает мне не найденные ошибки. Например:
http://example.com/my-page/
теперь это не сработает, но я поставилhttp://example.com/my-page
тогда он будет работать нормально, поэтому я хотел бы, чтобы они оба работадругая проблема в том, что
.html
страницы все еще открываются. Например, если я открою страницу какhttp://example.com/my-page.html
Он также работает, но я хочу его преобразовать вhttp://example.com/my-page
автоматически, я знаю, что могу использовать 301 перенаправление для этого, но это не будет работать, так как здесь много файлов, поэтому я должен использовать разные правила 301 для разных URL.
Пожалуйста, Советом.
спасибо
2 ответов
правило 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>
Я знаю, что это почти год, но я постараюсь. Я не уверен, что правильно понимаю вашу проблему, но если я это сделаю, я просто использую
<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>
затем остальные заключительные операторы, которые вы используете.