iis7 url переписывает (удалите .aspx), и получение ошибки 404

Попробуйте этот Тест Почтового сервера. Это скажет Вам, что могло быть неправильным и как зафиксировать его.

1
задан 20 October 2011 в 03:02
1 ответ

Удаление .aspx из URL-адреса путем перенаправления пользователя на URL-адрес без .aspx - только одна часть решения.

Если вы сделаете это перенаправление, как сервер когда-либо узнает, что сценарий (с расширением .aspx) для выполнения, если URL-адрес не содержит правильного имени (без расширения .asp)? Поэтому вам нужно добавить правило, чтобы исправить это. Способ сделать это - создать правило, которое соответствует любому URL-адресу, но не соответствует ни одному существующему файлу или каталогу. Если мы столкнемся с этим, мы можем предположить, что это может быть переписанная ссылка на страницу ASPX, поэтому мы переписываем URL-адрес, добавляя .aspx. Если это не страница ASPX, в любом случае это приведет к ошибке 404.

Чтобы все это работало с вашим существующим кодом, вам необходимо переписать исходящий ответ ваших страниц, чтобы удалить все существующие ссылки на страницы .aspx, чтобы не включать расширение. В противном случае вы получите много ненужных перенаправлений, и сообщения формы на aspx-страницы больше не будут работать.

И последнее, но не менее важное: вам нужно отключить сжатие, поскольку исходящая перезапись не работает с включенным сжатием.

Все это приводит к в следующих правилах перезаписи для вас web.config:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Remove .aspx from URL" stopProcessing="true">
                <match url="(.*)\.aspx$" />
                <action type="Redirect" url="/{R:1}" />
            </rule>
            <rule name="Add .aspx for non-existing files or directories">
                <match url="(.*)" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/{R:0}.aspx" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="Remove .aspx from links in the response" preCondition="Only for HTML">
                <match filterByTags="A, Area, Base, Form, Frame, IFrame, Link, Script" pattern="(.*)\.aspx(\?.*)?$" />
                <action type="Rewrite" value="{R:1}{R:2}" />
            </rule>
            <preConditions>
                <preCondition name="Only for HTML">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>
    <urlCompression doStaticCompression="false" doDynamicCompression="false" />
</system.webServer>
1
ответ дан 4 December 2019 в 01:22

Теги

Похожие вопросы