经典的ASP URL重写

时间:2009-10-26 11:44:32

标签: asp-classic url-rewriting

当我无法访问IIS以进行任何重写更改时,我想知道是否可以使用经典ASP进行URL重写?

我们有一个在线商店,产品通常链接为/product.asp?ContentID=X,但希望有更多的SEO友好,如/ product / unique-product-name

不幸的是,我们在共享托管平台上,并且当前托管服务提供商不愿意为其服务器安装其他组件,以防它们导致其他人出现问题。 :(

3 个答案:

答案 0 :(得分:4)

以后的回答可以帮助你或其他人。

我有时候仍然会使用经典的ASP编写代码,并且由于共享托管等原因,还会在一段时间内重写URL重写。

当我确实可以手动访问IIS设置,或者询问服务器支持团队时,我使用了404错误方法。虽然这有效,但并不好。它比“正常”方式略慢,并且像疯了一样堵塞了我的错误报告。

自IIS7问世以来,我发现一个托管服务提供商提供了IIS7 URL重写模块的使用(对我而言是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

享受

答案 1 :(得分:2)

可能不是。

至少应该改变404页面的IIS配置,这样你的代码就可以控制。

答案 2 :(得分:2)

我做到了这一点。它很蹩脚但可行。

正如另一位评论者提到的,您可以拥有自定义404页面。您需要至少与托管服务提供商合作,以更改IIS以将404错误发送到目录中的自定义页面。他们应该没有问题;不会影响其他用户。

据我所知,在你的自定义404 ASP页面上,你真正有权访问的是通过Request.ServerVariables(“QUERY_STRING”)的原始URL

然后,您可以解析其中的内容并重定向到Server.Transfer所需的任何内容(而不是Response.Redirect,因为您需要无缝的服务器端重定向而不是客户端重定向)

确保你有一个可以解决实际404错误的问题!