Terug naar de voorpaginaTBForum nu ook op je mobiel!
Klik hier voor meer info en gratis link...

Home Nieuw Vraag & Aanbod Forums Artikelen Bedrijvengids Zoeken

   Erik van de Ven, Only Media
5 mrt 2010 07:56 
Hallo allemaal,

Op mijn website maak ik gebruik van .htaccess om wat nettere links te creëren voor google. Nu zit hier een kleine fout in. Ik heb namelijk o.a. de volgende regels code in de .htaccess staan:

RewriteRule ^nl/articles/?$ index.php?lang=nl&p=articles [L,QSA]
RewriteRule ^nl/articles/(\d+)/(.*)$ nl/articles/?lang=nl&a=$1 [L,QSA]


In de bovenstaande links wordt op de plek van de (\d+) een id van het artikel geplaatst, zodat de .php pagina weet welk artikel hij uit de database moet lezen. Op de plek van de (.*) komt de titel van het artikel (ook uit de database gehaald, maar hier zijn rare tekens weggehaald en spaties vervangen door dashes).

Met deze methode wordt er een ander artikel (of een melding van 'kon artikel niet vinden') weergegeven als je op de plek van het ID, het getal verandert. Maar het gedeelte NA het ID (de titel van het artikel), mag gewoon verandert worden, hier wordt namelijk door de PHP pagina niet naar gekeken en er wordt dus altijd hetzelfde artikel weergegeven.

Door het bovenstaande probleem KAN ik dus last krijgen van duplicate content, althans dat neem ik aan? Mocht er ooit een site zijn die een fout heeft gemaakt in een link die naar mijn website linkt, dan komt men op dezelfde pagina met een verkeerde link....

Nu heb ik voor DIT probleem een heel simpele oplossing. Ik laat de PHP pagina ook naar de titel kijken en indien deze verkeerd is, een foutmelding te geven. Mijn vraag aan jullie of dit een meest geschikte oplossing is. Ik kan namelijk zo geen andere oplossing bedenken dat dit met .htaccess opgelost kan worden.

Maar nu blijf ik toch nog met één probleem zitten, in de bovenstaande code. Namelijk de laatste slash. Op al mijn pagina's kan men naar de pagina gaan MET of ZONDER een slash op het einde van de link (bv. erikvandeven.com/test/ of erikvandeven.com/test geeft dezelfde pagina). Zijn er oplossingen hiervoor door men automatisch door te verwijzen naar erikvandeven.com/test/ indien men naar erikvandeven.com/test surft??

     Aangepast op 05-03-2010 07:59 door Erik van de Ven
   R. Kapitein, Smoved
5 mrt 2010 09:25 
RewriteRule ^nl/articles/(\d+)/(.*)/$ nl/articles/?lang=nl&a=$1 [R=301]

Zou moeten werken, niet getest. Overigens zou het niet zoveel uit moeten maken met of zonder slash, google herkent het waarschijnlijk wel als dezelfde directory.

   Richard O., Particulier
5 mrt 2010 09:25 
Nu heb ik voor DIT probleem een heel simpele oplossing. Ik laat de PHP pagina ook naar de titel kijken en indien deze verkeerd is, een foutmelding te geven. Mijn vraag aan jullie of dit een meest geschikte oplossing is.
Beter: Als de titel verkeerd is, geen foutmelding geven maar een 301 naar het goede id en de juiste titel.

Voor je tweede probleem: zelfde oplossing: geen slash dan redirect naar de versie met slash. Dit kan je in .htaccess oplossen.

Dat is overigens ook wat een webserver doet als je een URL benadert zonder extensie of slash: een redirect naar versie met slash.

EDIT
Overigens zou het niet zoveel uit moeten maken met of zonder slash, google herkent het waarschijnlijk wel als dezelfde directory

@R Kaptein: nou nee... in het laatste geval wordt het niet als directory herkend: een relatieve link op die pagina gaat namelijk verschillende kanten op afhankelijk van de slash:
<a href="bla.html">link</a> gaat of naar /test/bla.html (als de URL een slash had), of naar /bla.html (als de URL geen slash had).

     Aangepast op 05-03-2010 09:26 door Richard O.
   Erik van de Ven, Only Media
5 mrt 2010 11:58 
RewriteRule ^nl/articles/(\d+)/(.*)/$ nl/articles/?lang=nl&a=$1 [R=301]

Zou moeten werken, niet getest. Overigens zou het niet zoveel uit moeten maken met of zonder slash, google herkent het waarschijnlijk wel als dezelfde directory.


Volgens mij wel, omdat ik dit ook niet zeker wist heb ik de pagerank van een webpagina bekeken, van een bedrijf waar ik ooit voor werkte. Als ik de pagina met slash op het einde bekeek kreeg ik een pagerank van 4 te zien en zonder een N/A. Dus wellicht heeft het wel degelijk invloed.

geen slash dan redirect naar de versie met slash. Dit kan je in .htaccess oplossen.


Dat zal wel lukken denk ik Thnx voor de tip

Beter: Als de titel verkeerd is, geen foutmelding geven maar een 301 naar het goede id en de juiste titel.


Ja dat is echt een veel betere oplossing, alleen nu de vraag, hoe doe ik dit? .htaccess kan niet even in mijn database kijken wat de juiste titel is die erbij hoort. Goede oplossing dus als ik bovenin mijn index.php de url laat controleren en dan eventueel naar de goede url door laten sturen mbv:
header("Location: http://ADRES/", true, 301);

????? Weet niet hoe google hiermee omgaat?

   Richard O., Particulier
5 mrt 2010 13:48 
@Erik: die php code lijkt me goed, Google vindt dat dus ook prima en zal zelfs de foute backlink meetellen qua link juice

   Erik van de Ven, Only Media
5 mrt 2010 14:54 
Oké het is gelukt:


function checklink(){
$language = $lang;
$page = $_GET['p'];
$article_id = $_GET['a'];
if ($page == 'articles'){
$link = $_SERVER['REQUEST_URI'];
$stripped = strstr($link, $_GET['a']);
$link = explode($_GET['a'],$stripped);
$article = explode('/',$link[1]);
$original_link = $article[1];

$check_article_query = ("SELECT * FROM weblog_articles WHERE article_id = '".$article_id."'");
$check_article_result = mysql_query($check_article_query) or die ("FOUT: " .mysql_error()); // query uitvoeren
while ($check_article_record = mysql_fetch_object($check_article_result)){
$right_name = $check_article_record->article_title;
}
//rare tekens uit de string verwijderen
$right_name = preg_replace("/[^a-z\d+\-\s+]/i", "", $right_name);
//spaties vervangen door dashes
$right_name = preg_replace("/\s+/i", "-", $right_name);
}
if ($original_link != $right_name){
$Domain = '127.0.0.1/erikvandeven.com';
header("Location: http://".$Domain."/nl/articles/".$article_id."/".$right_name."/", true, 301);
}
}


Moet de code nu wel wat netter maken, want die $Domain gaat straks weg en dat wordt een absolute link, maar voor localhost is het even noodzakelijk. Ook heb ik nog notices van bepaalde variable die IE als undifined ziet.. Maaarrrr als ik nu bv. in deze link

http://localhost/erikvandeven.com/nl/articles/1/Welkom/

ipv Welkom bv. sdlfjsadlfkjdslkfj type, dan zie ik deze meteen terug veranderen in

http://localhost/erikvandeven.com/nl/articles/1/Welkom/

zodra ik op ENTER druk.

Dat is dus mooi, ben er nu tevreden over. Nog bedankt voor het meedenken

     Aangepast op 05-03-2010 14:56 door Erik van de Ven
   Danny de Haan, Particulier
12 mrt 2010 23:12 
En vergeet de canonical tag niet:

(Log in om link te zien!)

Is hetzelfde al

(Log in om link te zien!)

Krijg je dus ook duplicate content. Canonical werkt als volgt, onderstaand in je head zetten:

<link rel=“canonical” href=“www.domein.nl/product.php?id=21” />

Zo weet google dat je de url's dus alleen leesbaar hebt gemaakt zonder een duplicate content aan je broek te krijgen.




 
© Copyright TargetMedia 2001-2012 | Mobile | Premium SMS | Micropayments | Muziek downloaden | Ringtones Bekijk bezoekers statistieken RSS feed