Rahinaa.biz / Lehti / Uudelleenohjaukset, Textpattern ja linkit
Julkaistu: 6. elokuuta 2008 Kategoria: Textpattern, PHP
Seuraavaa osasta Rahinaa.biz:n, eli tämän sivuston, siivousurakassa. Siivous on tapahtunut (plus tapahtumassa) ja seurauksena on paljon hävinneitä linkkejä, sivuja, artikkeleita ja niin edes päin. Pääasiassa kaikki muu paitsi artikkelit, ovat muuttaneet /lehti/-hakemistosta etusivulle.
Mutta tämähän johtaa hirveään määrään kuolleita linkkejä, ainakin näin kävijöille, boteille taas tuota pikkukuraa ei välttämättä kannata ollenkaan työntää. Miten siis tämä on korjattu? Parilla rivillä koodia.
Aloitetaan sivunumeroiden kohdalta, sillä nehän osoittivat alkuperäisesti osoitteeseen /lehti/?pg=2. Tämähän ei ole oikein, niidenhän tulisi osoittaa etusivulle. Ei hätää, pari riviä PHP-koodia korjaa tämän:
if(is_numeric(gps('pg'))) {
header('Location: '.hu.'?pg='.gps('pg'),TRUE,301);
exit();
}
Tuohan rivi ohjaa pg-GET-parametrit aina tuonne sivuston juureen, jolloin saadaan aikaan osoitteita muotoa www.rahinaa.biz/?pg=x. Tämähän kuitenkaan ei riitä, vaan tuohan aiheuttaa loputtoman uudelleenohjausloopin – siinähän ei ole ollenkaan Textpatternin osiota mukaan ottavaa konditionaalilauseketta.
if(section(array()) == 'lehti') {
global $is_article_list;
if($is_article_list == TRUE) {
if(is_numeric(gps('pg'))) {
header('Location: '.hu.'?pg='.gps('pg'),TRUE,301);
exit();
}
}
}
Noin. Nyt uudelleenohjaus tapahtuu vain kun kyseessä on sivutettu sivu lehti-osiossa. Mutta säläähän on vielä niin pirusti lisää. On kuukausien mukaan menevää arkistoa, kategoriaa, hakua, sekä ihan sitä itse osion etusivuakin.
Lisätään aikaisempaan PHP-koodin hakujen uudelleenohjaaminen, etteivät niihin linkittävien linkit hajoasi.
<txp:php>
if(section(array()) == 'lehti') {
global $is_article_list;
if($is_article_list == TRUE) {
if(is_numeric(gps('pg'))) {
header('Location: '.hu.'?pg='.gps('pg'),TRUE,301);
exit();
}
// Hakujen uudelleenohjaaminen
elseif(gps('q')) {
header('Location: '.hu.'?q='.gps('q'),TRUE,301);
exit();
}
}
}
</txp:php>
Tämän jälkeen jää vielä paljon lisää uudelleenohjattavaa, kuten kuukausien mukaan menevät arkistot. Lopulta koodista siis tulee suurinpiirtein jotain tälläista:
<txp:php>
if(section(array()) == 'lehti') {
global $is_article_list;
if($is_article_list == TRUE) {
if(is_numeric(gps('pg'))) {
header('Location: '.hu.'?pg='.gps('pg'),TRUE,301);
exit();
}
elseif(gps('q')) {
header('Location: '.hu.'?q='.gps('q'),TRUE,301);
exit();
}
elseif(is_numeric(gps('vuosi')) && is_numeric(gps('kuukausi'))) {
header('Location: '.hu.'?month='.gps('vuosi').'-'.gps('kuukausi'),TRUE,301);
exit();
}
elseif(gps('c')) {
header('Location: '.hu.'kategoria/'.gps('c'),TRUE,301);
exit();
}
elseif(gps('kategoria')) {
header('Location: '.hu.'kategoria/'.gps('kategoria'),TRUE,301);
exit();
}
else {
header('Location: '.hu,TRUE,301);
exit();
}
} else {
if(is_numeric(gps('pg'))) {
header('Location: '.permlink(array()),TRUE,301);
exit();
}
}
}
</txp:php>
Ja tämä on lisätty sivuston käyttämän yleisen sivupohjan alkuun, jotta se ladattaisiin suurinpiirtein sivun alkuvaiheessa.
Näin eivät ulkoa tuleet linkit eivät hajoa, mutta hakukoneethan eivät paljoa tee sivuston hakutuluksilla, saati sitten tagilistauksilla: nehän lisäävät tuplasisältöriskiä, sillä samat artikkelit tulostuvat monella eri sivulla. Täten nämä voi hyvällä syyllä estää boteilta robots.txt-tiedoston avulla. Kuten esim.
User-agent: *
Disallow: /tag/
Disallow: /?month=*
Disallow: /?q=*
Disallow: /kategoria/
Disallow: /portfolio/
Kommentointi suljettu [2] Tagit: textpattern
Olet näköjään uudistanut tämän kommentointialueen ulkoasun ihan kokonaan. Näyttää ainakin raikkaammalta kuin se aikaisempi jutska.
Tuo koodiesimerkki robots.txt-tiedostosta on aika epävarma keino, koska sillä annettua indeksiontiohjeistusta noudattaa vain ne hyväntahtoiset botit. Spammibotit ja muut inhat epelit voivat katsella robots.txt-filun sisältöä ja yrittää löytää sen avulla joitain tietoturva-aukkoja. Tällaisen uhkakuvan esitti muistaakseni Perishable Pressin bloggaaja. (Samasta blogista löytyy mm. niitä erittäin hyödyllisiä .htaccessiin liittyviä kikkoja.)
Petri, joo ja juu. Tietoturva-aukkoja löytyy vähän kaikesta, mutta toisaalta noissa minun kielloistani sitä ei löydy. No mitä nyt se voi aiheuttaa extra SQL kyselyjä, mutta niitähän aiheuttaa ihan minkätahansa sivun pommittaminen.
Kaikki nuo yleiset GET-variaabelit, kuten q, c, id – joita tuossa estetään, ovat puhdistettuja niin erikoismerkeistä, kuten escapetoitu heittareista ja vaarillisista sanoista, joten vaikka niihin yrittää mitä tahansa yhdistää, ei niistä ainakaan synny mitään tietoturvaan liittyvää.
Ja onneksemme tuolla robots.txt:llä on vain hakukoneoptimointiin liittyviä tarkoituksia, kuten blokkia googlen botit noista paikoista: ne eivät tosiaankaan tee mitään noilla identtisillä artikkelilistauksilla.
Jos robots.txt:llä aukeaa, tai paremminkin sanottuna paljastuu, tietoturva-aukkoja, silloin kannattaisi oikeasti tutkiskella sitä omaa napaa ja miettiä järjestelmäänsä uudestaan :-)
Tämän bloggauksen kommentointi on suljettu, sen oltua auki 6. elokuuta 2008 lähtien kuusi viikkoa. Tuona aika merkintä sai 2 kommenttia. Merkinnän kestolinkki: http://www.rahinaa.biz/lehti/uudelleenohjaukset-textpattern-ja-linkit
Elämä on pääasiassa kahvia, taiteilua, ohjelmointia, musaa, tunteita, nauttimista, aurinkoa, kävelemistä, kokkaamista, elokuvia hitusella kauneutta, sekä vastakohtaista rumuutta.
Jukka, 19,
web developer,
haahuilija,
musafriikki
© Copyright 2008 Jukka Svahn. All rights reserved. Sivun ylälaitaan