• LW

  • SEO barát URL kezelés - duplikált tartalom

  • 2008. Nov. 15. 21:23
Bár egyre kevésbé számít, de még mindig sokat ér ha az oldalunk URL címei tartalmazzák az adott aloldalakhoz tartozó kulcsszavakat, főleg a kisebb oldalaknál. Emellett ügyelnünk kell arra is, hogy azonos vagy túl nagy mértékben egyező oldalakra ne mutasson két vagy több URL cím, erről lesz szó a tovább mögött.
Ha egy oldalra több URL mutat, akkor beszélünk duplikált tartalomról, amiért a keresők keményen szokták büntetni az oldalakat. A leggyakoribb eset a www. és www. nélküli URL cím, az index.php és az anélküli URL cím, a / jelekkel teli, vagy a / jelek nélküli (a legvégén).

A www. használatát a kezdetekkor érdemes eldönteni és ragaszkodni ahhoz a verzióhoz. Szerintem a www. ideje lejárt, ezért az alábbi függvényben azt a változatot mutatom be, ahogy eltüntethetjük.

Az index.php-t is érdemes eltüntetni az URL címből, sőt vele mást nem is tehetünk, mert nem vizsgálhatunk minden egyes URL-t, hogy kell-e oda vagy sem index.php, aról nem is beszélve, hogy szebb is nélküle.

A / jelekkel teli URL címeket érdemes 404-es hiba oldalra irányítani. Azokat az URL címeket pedig, amiknek a végéről hiányzik a / jel pedig megtoldjuk a végét egy / jellel. Vigyázni kell vele, hogy ha dinamikus paramétereket is használunk, akkor ne kerüljön / jel a végére.

Az alábbi függvény mindhárom esetre megoldást kínál:
Kód
	// Prefered URL Redirections
function redirections() {
	$incoming_url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
	
		/* Index.php eltávolítása */
	if(stristr($_SERVER["REQUEST_URI"], 'index.php'))
	{
		$prefered_url = str_replace("index.php", "", $incoming_url);
		header("HTTP/1.1 301 Moved Permanently");
		header('Location: http://' . $prefered_url);
		exit();
	}	
		/* / jel az URL végére */
	if(substr($_SERVER["REQUEST_URI"], -1) !== "/" && $_SERVER['QUERY_STRING'] == "")
	{
		$prefered_url = $incoming_url . "/";
		header("HTTP/1.1 301 Moved Permanently");
		header('Location: http://' . $prefered_url);
		exit();
	}
		/* Halmozott / jelek */
/*
	if(stristr($_SERVER["REQUEST_URI"], '//'))
	{
		header("HTTP/1.1 301 Moved Permanently");
		header('Location: http://domain.hu/404esoldal.php');
		exit();
	}
*/
		/* www. eltávolítása */
	if(stristr($_SERVER["HTTP_HOST"], 'www'))
	{
		$prefered_url = str_replace("www.", "", $incoming_url);
		header("HTTP/1.1 301 Moved Permanently");
		header('Location: http://' . $prefered_url);
		exit();
	}
}

Ezután már csak meg kell hívni a függvényt:
Kód
redirections();

Ajánlott Cikkek

SzoZo

2008. Nov. 16. 18:59
Szia!
Egyetértek, hogy a www kora lejárt, már régebben is tiltakoztam, az emberek fejéből nem lehet kiverni ezt a beidegződést.
no-www.org oldalon részletezik a hátrányait.
Sok kényelmetlenséget okoz, ha nem egyezik meg az url címe. Az eltérés csak a www.
:)

Lightning

2008. Nov. 16. 20:11
A weblapcímekben még a jobbik eset, van aki az e-mail címekből se tudja nélkülözni.
WWW betegség...
Képzelem milyen káosz lesz, amikor megjelenik egy halom új TLD. :D

Guest

2008. Nov. 16. 23:13
Szia,
ezt a kódot hogyan alkalmazom? Melyik fájlba illeszted bele?

Lightning

2008. Nov. 17. 16:22
Ha van init.php fájlod, ami a fő függvényeket és változókat adja meg, akkor oda, ha nincs akkor csinálj egyet és minden oldalon inlude-dal hívd meg. Egy ilyen a fájlban legyen a kód.

Guest

2008. Nov. 18. 04:03
az a baj hogy csak html faljaim vannak... :(

Lightning

2008. Nov. 18. 16:33
Remélem .htaccess fájlokat tudsz használnia tárhelyeden.
Az alábbi kódot illeszdbe be a root mappába egy .htaccess fájlba.
Kód
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.+).html(?[.+?])?$1.php$2
</IfModule>

Így a fájljaid helyett csinálhatsz PHP fájlokat és azok fognak bejönni .html-re is a böngészőben.

Guest

2008. Nov. 19. 00:16
ha beteszem ezt a httaccess-be akkor internal server error a vege :(

Lightning

2008. Nov. 19. 16:20
Akkor kénytelen leszel .php-t használni, ha szerver oldalon is futtatni akarsz valamit, például ezeket az átirányításokat.

lili

2008. Nov. 28. 01:39
Szia Lightning,
akkor hogy is van ez?
adott egy init.php fájl:
<?php
fenti kód
?>
ezt mondjuk a fejlécbe - minden oldalon megjelenik - behívom include-dal...
- include és redirect hová jön? v. elé, mögé, közé?
jó az elképzelés?
köszi a választ!

Lightning

2008. Nov. 28. 23:06
Üdv!
A függvény meghívása is mehet az init.php-ba.
Az include pedig minél előbb annál jobb. Én legelőre tenném, hogy a morcos robotok ne kritizálhassák a betöltési időt, ha átirányítjuk őket, ha meg nincs átirányítás, nem érzni azt az egy ezred vagy kevesebb másodpercet.
Komment küldése
A komment küldéshez regisztráció szükséges!
Bejelentkezés / Regisztráció