Seo / Url - Yii Und Bindestriche

Hallo liebe Yii Gemeinschaft!

Habe zwei Informative Posts zu diesem Thema gefunden, und nun meine eigene Adaption vorgenommen. Will mit diesem Post erfragen ob es A) einen neuen Sachstand zu dem Thema gibt bezüglich Yii und B) ob mein Vorgehen gut ist oder ob man es auf eine andere Art und Weise besser machen könnte.

Zielsetzung: URLs SEO freundlich gestalten mit Yii, Bindestriche in der URL.

Problem: Yii unterstützt keine Bindestriche in den Action Namen, weiter sind Routen von Hand für alle betroffenen Seiten für mich keine Lösung.

Meine Lösung:

  • Controller und Action Namen bekommen einen Unterstrich zwischen Wörtern.

  • Bei Anfragen wandle ich dann Bindestrich mit Unterstrich.

  • Die System interne URL Generierung ersetzt Unterstrich mit Bindestrich.

den CUrlManager erweitern um




<?php


class UrlManager extends CUrlManager

{


	private $hasDash = false;


	public function parseUrl($request)

	{


		// Verarbeitet die URL

		$url = parent::parseUrl($request);


		// Wenn in der Route Bindestriche vorkommen werden diese für die Action in Unterstriche umgewandelt

		$this->hasDash = substr_count($url, "-") > 0;

		return $this->hasDash ? str_replace('-', '_', $url) : $url;


	}


	public function createUrl($route,$params=array(),$ampersand='&')

	{


		if (substr_count($route,'_') > 0) {

			$route=str_replace('_','-',$route);

		}


		return parent::createUrl($route, $params, $ampersand);


	}

}


?>



Damit die Anfragen durchkommen und die betroffenen Seiten NICHT über die Unterstriche erreichbar sind habe ich noch die Config geändert auf:




'<controller:[0-9a-zA-Z\-]+>' => '<controller>',

'/<controller:[0-9a-zA-Z\-]+>/<action:[0-9a-zA-Z\-]+>'=>'<controller>/<action>',



Also soweit ich das nun getestet habe klappt das so wunderbar. Könnt ihr das bestätigen? Oder gibt es bessere Lösungsansätze?

Viele Grüße

Verstehe grad nicht genau, was du eigentlich vor hast… Warum willst du Bindestriche in Action namen?