#asp.net #url-rewriting #urlrewriter.net
#asp.net #url-перезапись #urlrewriter.net
Вопрос:
в настоящее время я использую модуль перезаписи URL-адресов IIS7, но основная лазейка в использовании модуля перезаписи URL-адресов IIS7 заключается в том, что я должен написать правило для всей страницы, которую я хочу использовать на веб-сайте, я хочу использовать правило comman и перенаправить его на определенную страницу (скажем, домашнюю страницу) и, используя global.asax, я могу перенаправить его на нужную страницу…
Возможно ли это с помощью перезаписи URL или есть ли какой-либо доступный инструмент, который я могу использовать для этой цели, или пример кода, который мог бы помочь мне в этом.
я не хочу расширения в URL.
у меня есть страницы типа index.aspx, news.aspx, artists.aspx, lessons.aspx … мне нужны URL-адреса типа index, news, lessons, artists, я создал правило в web.config, например
< rewrite>
< rules>
< rule name="urlType1">
< match url="^(w*)" />
< action type="Rewrite" url="default.aspx" appendQueryString="false" />
< /rule>
< /rules>
< /rewrite>
это переведет любую страницу в default.aspx, а затем, используя rawUrl в global.asax, я проверяю страницу, например, если пользователь ввел «новости», тогда я переписываю в news.aspx
Надеюсь, это помогло.
Ответ №1:
Вы можете поступить так же, как вы предлагаете в своем вопросе — перенаправить все запросы на один URL: И затем в вашем Global.asax вы могли бы вызвать Server.Передача ( «~/file1.aspx») для пересылки запроса к определенному файлу.
Или вы могли бы выполнить передачу непосредственно из вашего правила перезаписи URL и пропустить дальнейшую обработку в вашем глобальном файле.asax. Например, это правило будет считывать входящий URL, у которого нет расширения файла, а затем перенаправлять запрос на файл с расширением файла:
<rule name="Append a file extension to all requests discard querystring" stopProcessing="true">
<match url="^(.*)?" />
<action type="Rewrite" url="{R:1}.aspx" />
</rule>
Подробнее о правилах перезаписи URL-адресов читайте в блоге Руслана Якушева по адресуhttp://ruslany.net /.
Ответ №2:
[РЕДАКТИРОВАТЬ] Хорошо, итак, для чего вы asking…as насколько я знаю, вам действительно нужно создать определенное правило перезаписи для каждой страницы. Я больше думал о MVC, где, когда вы переходите к:
/новости
он направляет к
/default.aspx
который вызывает NewsController.Индексирует и отображает страницу новостей из default.aspx. Однако, чтобы фактически разбить все на отдельные страницы и просто попытаться удалить extension…as насколько я знаю, вам нужно создать новое правило для каждого экземпляра.
Правила перенаправления могут быть настроены из файлов web.config.
Например, вот что WordPress делает в файле web.config, который входит в состав WordPress:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule></rules>
</rewrite>
</system.webServer>
</configuration>
Направляет ВЕСЬ трафик на index.php страница. The index.php затем файл считывает URL-адрес и выдает данные на основе URL-адреса. Это не перенаправляет его на другую страницу после перенаправления, это — скорее — решает, какой контент отображать.
MVC работает по принципу, вы видите этот url:
/news > will call > NewsController.Index();
/news/index > will call > NewsController.Index();
/news/view > will call > NewsController.View();
/news/read/id > will call > NewsController.Read(id);
Затем эти контроллеры обычно получают данные из базы данных и применяют данные к «Представлению» (html-страница, которая находится где-то на сервере с переменными для отображения данных, которые контроллер передает ему).
Комментарии:
1. спасибо за ваш ответ, я обновил свой вопрос, пожалуйста, взгляните
2. отредактированный пост. К сожалению, я не знаю способа выполнить вашу точную конфигурацию без отдельных перезаписей.
3. можете ли вы уточнить, что вы просили для MVC, который перенаправляет на default.aspx и вызывает NewsController. Индексирует и отображает страницу новостей в формате default.aspx
4. или у вас есть какая-либо идея добавить правило перезаписи во время выполнения в том же формате, что и выше, в отдельный файл и прикрепить этот файл в файле web.config
5. добавил объяснение о MVC, насколько смог, с примером перенаправления всех страниц для индексации. Я не знаю, как создавать правила во время выполнения, если это возможно или даже целесообразно.