2010-12-28 14 views
0

ich zu unserem SEO-Spezialist erklärte, die URL-Struktur CakePHP ist Domain/Controller/view/paramsCakePHP, URLs und SEO

so ein bestimmtes Produkt die URL sehen so etwas wie das sein könnte:

example.com/products/show/product-name-slug

Dies würde dann mit den product-name-slug als Parameter auf den products controller zur show Funktion zuordnen, so dass es die richtige Produktseite machen könnte.

Er dachte, das war gut, aber gefragt, ob ich den Controller p und den Namen der Ansicht könnte d so würde die URL dann:

example.com/p/d/product-name-slug

Da dies würde die entsprechenden Schlüsselwörter (Produkt-Name-Slug) haben ein höheres Verhältnis über die gesamte URL.

Ich verstehe, wo er herkommt, aus einer SEO-Perspektive, aber das macht keinen Sinn aus einer Programmierperspektive geben Controller und Ansichten einzelner Buchstaben Namen.

Machen die mehrdeutigen Controller/View-Namen in der URL einen großen Unterschied? Wenn ja, was wäre eine gute Kompromisslösung?

Antwort

3

mit zusätzlichem Weg in Konfiguration:
example.com/seo/product-name-slug würde Code und SEO Person glücklich

Router::connect(
    '/seo/:slug', 
    array('controller' => 'products', 'action' => 'show'), 
    array(
     'pass' => array('slug') 
    ) 
); 
+0

Das letzte Array, das setzt ' id =>. + 'was macht das? –

+0

ein bisschen Overkill, es sollte eine beliebige Zeichenfolge regexp sein –

0

Es macht einen großen Unterschied, was in Ihrer URL ist. Ich habe nie die Standard-URL-Struktur von CakePHP verwendet. Es ist gut, es standardmäßig zu haben, aber es wäre eine inakzeptable Einschränkung.

Kuchen wäre es nicht wert sein, ein Rahmen genannt zu werden, wenn es keine Aktionen auf beliebige URLs Karte könnte http://book.cakephp.org/2.0/en/development/routing.html#route-elements

Sie können sogar regexp zu Aktionen entsprechen:

Router::connect(
    '/:controller/:year/:month/:day', 
    array('action' => 'index', 'day' => null), 
    array(
     'year' => '[12][0-9]{3}', 
     'month' => '0[1-9]|1[012]', 
     'day' => '0[1-9]|[12][0-9]|3[01]' 
    ) 
);