Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie .xml
Forum PHP.pl > Forum > PHP
Destrudo
Hej,

Próbowałem zrobić sprawdzenie sitemap.xml (czy istnieje), jednak nie do końca wiem jak to zrobić. Rozwiązanie w stylu sprawdzenia, czy istnieje adres: domena.pl/sitemap.xml jest nieco słabe, bo np. mając wtyczkę yoasta do wp, adres mapy strony będzie miał inną postać. Nie wiem jak to zrobić poprawnie, więc chciałbym tylko uzyskać pomoc, jak zrobić warunek: sprawdzenie czy istnieje domena.pl/sitemap.xml LUB domena.pl/sitemap_index.xml (warunek do yoasta). Nie działało mi to zapewne przez podkreślnik w adresie, stąd nie do końca wiem jak to zrobić. Mój kod sprawdzający jeden URL:
  1. <?php
  2.  
  3. $url = 'http://www.example.com';
  4. $handle = @fopen($url,'r');
  5. if ($handle !== false) {
  6. echo 'Istnieje';
  7. } else {
  8. echo "Nie istnieje";
  9. }
  10. ?>
Pyton_000
  1. var_dump(get_headers('https://blog.piotrows.pl/sitemap.xml'));

W Wyniku dostaniesz tablicę gdzie w indeksie 0 będziesz miał kod response. 404 brak - 200 jest
Destrudo
Tylko 404 to brak? np. u mnie - https://destrudo.pl/xx/sitema.php (wstawione destrudo.pl/sitemap.xml) jest 503, jest przeniesienie na inny link (yoast). Mogę uznać, że TYLKO 404 i 301 (jakby wstawić np onet) to brak sitemapy?
Pyton_000
te 404 i 200 to takie uproszczenie. Teraz musisz przetestować sobie.

301 to przeniesiona i prawdopodobnie będzie tam adres na który został przeniesiony.
Destrudo
301 daje onet.pl/sitemap.xml i tam nie ma mapy (przenosi na stronę główną). A gdyby zrobić warunek w stylu: jeśli 301 - sprawdź, czy w URL jest ciąg 'sitemap'. To powinno załatwić sprawę?

Nie do końca wiem jak wyciągnąć docelowy adres url, ale chciałbym zrobić coś takiego (myslę, że to dobre rozwiązanie):
  1. <?php
  2. $x = var_dump(get_headers('http://onet.pl/sitemap.xml'));
  3. $array = get_headers('http://onet.pl/sitemap.xml');
  4. $nag = $array[0];
  5. if (strpos($nag, '404') !== false) {
  6. $czt = 'tak';
  7. }
  8. if (strpos($nag, '301') !== false) {
  9. $cz = 'tak';
  10. }
  11. if ($cz == 'tak'){sprawdź docelowy adres url i jeśli jest w nim ciąg 'sitemap', to $x = 'tak'}
  12. if ($czt == 'tak' or ($cz == 'tak' and $x == 'tak')){echo ' brak sitemap';}
  13. ?>
Pyton_000
Musisz sprawdzić kilka warunków.

404 - nie ma wcale
301, 302 - sprawdzasz ten adres. Jesli ma słowo 'sitemap' to sprawdzasz ponownie ten adres. Jeśli nie to możliwe że go nie ma wcale (nie wiem czy jeśli sitemap przeniesione pod inny adres to czy tam będzie url do pliku. To trzeba zweryfikować)
200 - plik istnieje.

Oczywiście trzeba to wszystko zweryfikować aby mieć pewność.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.