Перезапись URL в классическом ASP - PullRequest
2 голосов
/ 26 октября 2009

Мне было интересно, можно ли перезаписать URL с помощью Classic ASP, когда у вас нет доступа к IIS для внесения каких-либо изменений в перезапись?

У нас есть интернет-магазин, где продукты обычно связаны как /product.asp?ContentID=X, но мы хотели бы иметь что-то более дружественное для SEO, например / product / unique-product-name

К сожалению, мы на платформе общего хостинга и в настоящее время хостинг-провайдер не желает устанавливать дополнительные компоненты на свой сервер в случае, если они вызывают проблемы у других. (

Ответы [ 3 ]

4 голосов
/ 10 февраля 2012

Более поздний ответ, но может помочь вам или другим.

Иногда я все еще кодирую в классическом ASP, а также некоторое время боролся с перезаписью URL из-за общего хостинга и т. Д.

Когда у меня был доступ к настройкам IIS, либо вручную, либо по запросу службы поддержки сервера, я использовал метод ошибки 404. Хотя это сработало, это не было здорово. Это было немного медленнее, чем "нормальный" способ, и это засоряло мои сообщения об ошибках как сумасшедшие.

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

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

Сохраните это как web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Rewrite to friendly URL">
                      <match url="^blog/([0-9]+)/([_0-9a-z-]+)" />
                      <action type="Rewrite" url="blog/article.asp?id={R:1}&amp;title={R:2}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Если кто-то входит:

http://mydomain.com/blog/1/the-article-title

... будет переписано в:

http://mydomain.com/blog/article.asp?id=1&title=the-article-title

Наслаждайтесь

2 голосов
/ 26 октября 2009

Я сделал это. Это глупо, но выполнимо.

Как уже упоминал другой комментатор, вы можете создать собственную страницу 404. Чтобы изменить IIS, вам потребуется, по крайней мере, небольшое сотрудничество с вашим хостинг-провайдером для отправки 404 ошибок на пользовательскую страницу в вашем каталоге. У них не должно быть проблем с этим; не повлияет на других пользователей.

Насколько я могу судить, на вашей пользовательской странице 404 ASP все, к чему у вас есть доступ, - это оригинальный URL-адрес через Request.ServerVariables ("QUERY_STRING")

Затем вы можете разобрать содержимое этого и перенаправить на то, что нужно с помощью Server.Transfer (не Response.Redirect, потому что вы хотите бесшовное перенаправление на стороне сервера, а не перенаправление на стороне клиента)

Убедитесь, что у вас есть аварийный случай для обработки фактических ошибок 404!

2 голосов
/ 26 октября 2009

Вероятно, нет.

Вы должны, по крайней мере, изменить конфигурацию IIS для 404 страниц, чтобы ваш код мог получить контроль.

...