如何为单个动态页面提供唯一的URL?

时间:2012-10-25 11:58:13

标签: url iis coldfusion url-rewriting

我认为我的问题措辞可能不正确但是我想做什么(为了SEO目的)。

我有一个页面,提供品牌的徽标和说明,例如沃尔沃。我想使用同一页面作为所有制造商的模板,但只需更改几个字就可以相应地为每个制造商定制。所以在URL中我传递了制造商的变量,例如“www.example.com/cars.cfm?manufacturer=BMW”,它将显示一个页面,提供有关宝马的信息。

问题是,对于每个制造商而言,信息仍显示为地址栏中的同一页面“cars.cfm”,但我真的希望它转到“www.example.com/manufacturers/volvo”这样的网址.cfm“所以它看起来只是该品牌的独特页面。但与此同时,我不想为每个制造商创建一个单独的CFM(或php / asp)页面。

有没有一种聪明的方法可以做到这一点?我想象它与URL重写有关,但不确定。我正在使用IIS 7.5。


为不同的汽车制造商创建大量子文件夹将非常繁琐。我的网站还包括其他类型的制造商,用于不同的产品,而不仅仅是汽车。我想URL重写是最好的,但我的想法是为每个制造商提供一个不同的“页面”,以便SEO得到改善。

基本上....

www.example.com/manufacturers/audi.cfm 
www.example.com/manufacturers/bmw.cfm 
www.example.com/manufactueres/volkswagen.cfm

但实际上我希望每个页面上的数据来自一个数据库,该数据库包含每个制造商的唯一数据,例如徽标图像和历史描述。

这是我的意思的一个例子:

http://www.fivestarautocentre.co.uk <-- go to bottom of that page and you can see links to various manufacturers

2 个答案:

答案 0 :(得分:3)

根据其他人的说法,首先创建您的www.example.com/cars.cfm?manufacturer=BMW页面并开始工作。

假设你在IIS上,那么你将在你的根文件夹中创建一个web.config文件(如果它还没有)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>

    <rewrite>
        <rules>
            <rule name="Cars-Rewrite">
                <match url="manufacturer/(\w+)" />
                <action type="Rewrite" url="/cars.cfm?manufacturer={R:1}" />
            </rule>
        </rules>
    </rewrite>

</system.webServer>

我的正则表达式可能已关闭,但也许其他人可能会使用正确的正则表达式。

答案 1 :(得分:0)

你可以通过URL重写来处理这个问题,正如其他人所建议的那样,但我想我会采取不同的方法。特别是对于SEO目的。 SEO的最佳解决方案是每个品牌的实际网址。考虑到这一点,请相应地创建您的网站。不要使用通用的www.example.com/cars.cfm页面,请使用www.example.com/bmw,www.example.com/volvo等。您仍然可以在每个文件夹下都有一个ColdFusion页面只是从其他位置包含您的通用ColdFusion模板(或调用cfc)。由于每个文件夹都有自己唯一的存根文件,因此在调用通用ColdFusion模板时,您可以通过相应的车辆制造商。例如,在www.example.com/bmw页面下:

<cfset manufacturer = "bmw" />
<cfinclude template="/mytemplates/genericpage.cfm" />

然后您的genericpage.cfm使用指定的变量显示相应的文本和图形。您甚至可以通过解析URL并在包含和执行模板时从中抓取制造商来解决每个文件夹下的特定变量问题。我相信cgi.script_name变量将包含执行此操作所需的路径。