| Autor | Zpráva | ||
|---|---|---|---|
| kironet96 Profil |
Dobrý večer,
chtěl bych se poradit. Potřebují udělat sitemap, ale aby se generovalo automaticky, takže php script. Jenže nechápu jak to udělat, nejdřív jsem zkoušel vytahnout všechna url z <body>, ale pak mi docvalko že tam vlastně nemusej být všechna url. Pak jsem proseděl pár hodin hledáním a nic moc nenašel. Tak bych chtěl poprosit jestli mi někdo nevysvětlíte jak na to, nebo jestli někdo nemáte funkční script. Děkuji Tu je ten můj pokus: <?php
header("Content-Type: application/xml; charset=utf-8");
echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' .PHP_EOL;
function sitemap($address)
{
function urlElement($url)
{
echo '<url>' . PHP_EOL;
echo '<loc>' . $url . '</loc>' . PHP_EOL;
echo '<changefreq>weekly</changefreq>' . PHP_EOL;
echo '<priority>1.00</priority>' . PHP_EOL;
echo '</url>' . PHP_EOL;
}
function ampReplace($string)
{
$complete = str_replace('&', '&', $string);
return $complete;
}
function getUrl($address)
{
$html = file_get_contents($address);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = ampReplace($url);
echo urlElement($address . $url);
}
}
return getUrl($address);
}
sitemap('http://example.com');
echo '</urlset>';
?> |
||
| juriad Profil |
kironet96:
Ty bys nejlépe měl znát všechny stránky na webu. A podle toho budeš generovat sitemapu. Třeba můžeš projít celou databázi a třeba víš, že články mají adresu ve formátu: /index.php?article=ciselneId. Pokud nepoužíváš databázi, můžeš projít disk a hledat php soubory v nějakém adresáři.
A pak je také otázkou, zda je sitemapa vůbec potřeba. Pokud se na každou stránku webu dokážeš dostat třemi kliknutími z úvodní stránky (což je přesně to co teď děláš, ale s hloubkou 1 klik), tak sitemapu vůbec nepotřebuješ. Jiná situace je například na zdejší diskusi, existuje tu 150 000 vláken a na většinu z nich vede odkaz jen ze stránkovaní - tedy doklikat se na nějakou stránku může trvat třeba 1000 kliknutí. V takovém případě má sitemapa smysl. Obvykle ji stačí generovat cronem třeba jednom za čas (při změně), nebo můžeš sitemapu mít rozdělenou na archiv, který se nemění nikdy a aktuality z posledního týdne, nebo ji uložit do souboru a kontrolovat při požadavku, zda je pořád platná (případně ji přegenerovat). Můžeš si ušetřit práci s xml a použít nějakou knihovnu (ano, umí i generování xml). |
||
| kironet96 Profil |
#3 · Zasláno: 24. 11. 2014, 08:46:08
juriad:
Díky, to co jsem zkoušel mi pak došlo taky že je jen 1 kliknutí. Sitemap potřebuji jelikož web má docela dost odkazu na které se dostanu proklikáním se. Zkusím projít databází, snad se podaří. |
||
| kironet96 Profil |
#4 · Zasláno: 24. 11. 2014, 10:17:36
Podařilo se mi to udělat pomocí DB a trochu ručně, pro url v menu.
Otázka mimo: Disallow: /folder/folder1/ Tohle zakáže robotum přístup jen do folder1 nebo to nebude fungovat? Díky |
||
|
Časová prodleva: 11 let
|
|||
0