2012-10-25 84 views
0

我認爲我的問題可能措辭不正確,但繼承人我想要做的(對於SEO目的)。如何爲單個動態頁面設置唯一的網址?

我有一個頁面給出品牌的標識和說明,例如沃爾沃。我想將這個頁面作爲所有制造商的模板,但只需稍作改動就可以相應地爲每個製造商定製它。所以在URL中我把它傳遞給製造商的一個變量,例如「www.example.com/cars.cfm?manufacturer=BMW」,它將顯示一個頁面,提供關於寶馬的信息。

問題在於,對於每個製造商,信息仍然在地址欄中顯示爲相同的頁面「cars.cfm」,但實際上我希望它轉到諸如「www.example.com/manufacturers/」之類的URL 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 
+1

你想要做的事情可以通過網址路由來完成。通過像www.example.com/manufacturers/ {id}'這樣的路線,請求www.example.com/manufacturers/BMW將通過請求參數路由到www.example.com/manufacturers請求的任何句柄, id =寶馬' – Sethi

+2

http://www.iis.net/downloads/microsoft/url-rewrite是IIS的重寫過濾器,每個人似乎都使用它。這可以讓你做你想做的事情,可能的缺點是你被綁定到特定的Web服務器。查看Tuckey重寫過濾器以獲得獨立於平臺的解決方案,如果這對您很重要 – barnyr

+0

此URL重寫也廣泛使用,並且基於Apache的mod_rewrite:http://www.helicontech.com/isapi_rewrite/ – duncan

回答

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> 

我的正則表達式可以關閉,但也許別人可以用正確的正則表達式插入內容。

+0

至少需要'(\ w +)' - 否則它只會匹配一個字符。除此之外,它取決於製造商可能包含的內容 - 也可以使用'([^ /?#] +)來捕獲任何非斜槓字符。 –

+0

我希望搜索引擎抓取工具認爲它已經轉到了獨特的內容靜態頁面,而不是相同的頁面,但動態添加了不同的內容。你認爲URL重寫是做到這一點的方法嗎? –

+0

URL重寫提供了更整潔的URL,這對人類(這是您的網站的目標用戶)有利。不要太擔心抓取工具。 –

0

你當然可以用URL重寫正如其他人建議,但我想我會採取不同的方式處理這個問題。特別是對於SEO目的。 SEO的最佳解決方案將成爲每個品牌的實際URL。考慮到這一點,相應地創建你的網站。請勿使用通用的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變量將包含執行此操作所需的路徑。

+0

這很聰明。他可以用index.cfm中的那些行使用相同的URL結構來處理它嗎? –

+0

@KRC不確定你的意思是'相同的網址結構'。我所建議的是他爲每個車輛製造商創建了一個實際的文件夾。包含在其中的通用頁面可以位於其他位置,並可以通過ColdFusion映射或其他類型進行引用。 –

+0

創建實際文件夾不是一個特別可擴展的解決方案。只要進行URL重寫就簡單多了。 –

相關問題