Szép URL generálás

Szép URL generálás

Szép URL generálás

Modern, keresőoptimalizált weboldalaink már túlnyomórészt kerülik az url-ben tárolt paramétereket. Egyfelől, mert nem túl vonzó a látogató számára, a Google is néha gondban van az értelmezésével, ráadásul esetenként érzékeny adatot is közölhet egy hacker számára. Éppen ezért nem csak szebb, de praktikusabb és biztonságosabb megoldás is az úgynevezett "szép url" használata.

A szép url összetétele kötött szabályok szerint kell, hogy felépüljön. Nem tartalmazhat speciális írásjeleket, ékezeteket, szóközöket, sem mondat végi írásjeleket. Sőt én igyekszem ennek egészén felül, mindig kisbetűssé alakítani a szép url-t.

Az url a legtöbb esetben valamilyen publikációnk címét tárolja, mondjuk egy cikk címét, vagy épp ennek a blog bejegyzésnek a címét. Ezt nem szokás minden alkalommal begépelni, hanem sokkal egyszerűbb megoldás egy függvény segítségével azt létrehozni.

Erre a célra alkottam meg a "get_friendly_url" nevű függvényt. Kiválogatja az ékezeteket és speciális írásjeleket, majd átalakítja őket "-"-jelre. Ennek eredményeképp lesz az "Ez egy blog bejegyzés"-ből ez az eredmény: "ez-egy-blog-bejegyzes".

Mivel a szóközöket és minden írásjelet átalakít "-"-jelre a függvény, így előfordulhat, hogy az átalakított szövegünk elején, vagy végén teljesen fölöslegesen áll egy "-"-jel, vagy egymást követően több "-"-jel szerepel. Természetesen ezeknek a szépséghibáknak a szűrésére is van megoldás a függvényben, így sem a szöveg legelején, sem a legvégén nem lesz fölösleges "-"-jel, sem egymás után felhalmozva.

A függvény 3 paraméter vár; A "$string" változó maga az a szöveg, amit szeretnénk átalakítani, a "$extension", hogy szeretnénk-e a szép url végére valamilyen "kiterjesztést" (ilyen lehet például a ".html"), a "$result" pedig az eredmény visszatérési módját tárolja.

A függvény továbbá felismeri a "/"-jel használatát és a szép url-t úgy állítja elő, hogy a mappa struktúrát megtartsa. Erre láthatsz is gyakorlati példát a letölthető demo-ban.

PHP


<?php
function get_friendly_url($string, $extension, $result)
	{
	if (filter_var($string))
		{
		$url_old = array('(í|Í)', '(á|Á)', '(é|É)', '(ö|Ö)', '(ő|Ő)', '(ü|Ü)', '(ű|Ű)', '(ó|Ó)', '(ú|Ú)');
		$url_new = array('i', 'a', 'e', 'o', 'o', 'u', 'u', 'o', 'u');
		$url_regexp = '([^a-zA-Z0-9]+)';

		$result_array = array();
		$slug_array = explode('/', $string);
		foreach ($slug_array as $slug)
			{
			$slug = preg_quote($slug);
			$slug = preg_replace($url_old, $url_new, $slug);

			$slug = strtolower(preg_replace($url_regexp, '-', $slug));
			$slug = preg_replace('/^[\-]+/', '',$slug);
			$slug = preg_replace('/[\-]+$/', '',$slug);

			$result_array[] = $slug;
			}

		$string = implode('/', $result_array);
		if (filter_var($extension))
			{
			$string .= $extension;
			}

		if ($result == 'get')
			{
			return $string;
			}
		elseif ($result == 'print')
			{
			echo $string;
			}
		}
	}
?>

PHP


<?php
echo 'Egy tetszőleges cím: '.get_friendly_url('Egy tetszőleges cím: ', '', 'get').'<br/>';
echo 'első mappa/második mappa/Egy tetszőleges cím: '.get_friendly_url('első mappa/második mappa/Egy tetszőleges cím: ', '', 'get').'<br/>';
echo 'első mappa/második mappa/Egy tetszőleges cím: '.get_friendly_url('első mappa/második mappa/Egy tetszőleges cím: ', '.html', 'get').'<br/>';
?>

A szép url generálása viszont önmagában még csak fél siker. Az url-t le is kell kezelni, hogy a tartalomkezelő rendszerünk tudja értelmezni azt. Erre a célra egy ".httaccess" fájlt szokás létrehozni, ami bármilyen url feldolgozása esetén mindig az "index.php" fájlra irányít át, úgy hogy egy $_GET globális változóban tárolja az url végződését. Ezt lehet később különböző módon elemeire szedni és megvizsgálni, hogy milyen tartalmat kell betölteni a megvizsgált url-hez. A feldolgozás módja rendszerenként és elgondolásonként egyedi, tehát erre a célra csak egy nagyon egyszerű példát mutatok be.

.htaccess


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?slug=$1 [L]

PHP


<?php
if (filter_input(INPUT_GET, 'slug'))
	{
	$slug_array = explode('/', $_GET['slug']);
	$last_slug = array_pop($slug_array);
	}
?>

Demo letöltése

Leírásaink azon kezdő és haladó programozóknak nyújtanak segítséget, akik már minimális szinten foglalkoztak weboldalkészítéssel. Ha szeretnél jobban elmélyülni a témában, vagy elsajátítani alapokat, még tovább fejlődni, akkor nézz körbe tanfolyam kínálatunkban, ahol a kezdőtől a profi szintig nyújtunk képzéseket a számodra.

Oszd meg barátaiddal is!

Facebook Twitter Linkedin

Elérhetőségeink

  • Címünk: 1139 Budapest, Frangepán utca 3. (1. emelet)

  • Ügyfélfogadás, beiratkozás: Hétfőtől - péntekig: 09:00-17:00

  • Telefonszámunk: 06 70 604 2060, vagy 06 1 4500 110

  • E-mail címünk:

Közösségünk