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: 9 let
|
0