Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> htaccess? sitemap do kilku domen na jednym serwerze, jak zrobić sitemap do domen, gdy wszystkie kierują na jeden serwer
freewalker
post 4.02.2016, 23:27:44
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


Witam, spotkałem się ostatnio z problemem, którego wujek google nie wyjaśnia mi zbyt oczywistym językiem.

Zacznijmy od podstaw:
- mam jeden serwer
- na ten serwer kierują 3 domeny: pl, de, co.uk, zależnie od domeny ustawia się odpowiedni język strony i cała zawartość

Mam sitemap gotowe i podpięte pod google dla domeny .pl, jak ustawić sitemap dla reszty domen? Nie mogę do jednego pliku wrzucać, bo będzie się to gryzło z SEO i indexowanie np. niemieckich linków pod polską domeną nie wchodzi w rachubę

Potrzebuję odpowiedniej komendy w htaccess? Albo robots?
Coś w stylu (napiszę w php i każdy załapie;P )

switch($domena)
{
case "pl": zaladuj_sitemap_polska();break;
case "de": zaladuj_sitemap_niemcy();break;
case "uk": zaladuj_sitemap_anglia();break;
}

Oczywiście nie bierzcie mnie za totalnego idiotę i wiem, że takiego kodu nie wstawię w htaccess ani robots;) Potrzebuję analogicznej alternatywy.

W robots.txt mam obecnie:
Sitemap: http://mojastrona.pl/sitemap1pl.xml

ale dodanie kolejnej linijki z odpowiednią domeną i plikiem nie rozwiązuje sprawy?

Z góry dziękuję mądrym głowom smile.gif
Go to the top of the page
+Quote Post
trueblue
post 5.02.2016, 10:29:14
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Dlaczego kodu nie wstawisz w robots.txt? Przecież możesz go parsować w php.
W robots.txt powinien być pełen URL do sitemap (z domeną).


--------------------
Go to the top of the page
+Quote Post
freewalker
post 6.02.2016, 21:34:44
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


Czyli dodanie w robots.txt:

Sitemap: http://mojastrona.pl/sitemap1pl.xml
Sitemap: http://mojastrona.de/sitemap1de.xml
Sitemap: http://mojastrona.co.uk/sitemap1uk.xml

w zupełności wystarczy? I będzie to poprawnie interpretowane przez googla i inne roboty?
Go to the top of the page
+Quote Post
trueblue
post 6.02.2016, 21:47:40
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Dla każdej domeny generujesz inną zawartość robots.txt


--------------------
Go to the top of the page
+Quote Post
freewalker
post 6.02.2016, 22:31:37
Post #5





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


Dzięki, a możesz podać przykład jak to zrobić?
Go to the top of the page
+Quote Post
trueblue
post 7.02.2016, 10:38:28
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/2147217...table-on-apache


--------------------
Go to the top of the page
+Quote Post
freewalker
post 9.02.2016, 13:49:53
Post #7





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


ale to nie rozwiąże problemu, jak wygeneruję robots.txt i w tym samym czasie na innej domenie będzie próba uzyskania do robots.txt - wygeneruje nowy plik nadpisując poprzedni, wszystko byłoby ok gdyby nie fakt, że może to nastąpić w tym samym czasie przez co któraś z domen uzyska błąd zapisu do pliku i nie powstanie robots.txt

Chyba, że chodzi o parsowanie pliku txt przez php i wyrzucenie odpowiedniej zawartości przez echo - ale z drugiej strony nie chcę dodawać rozszerzenia txt dla parsera php bo mam inne pliki tekstowe na serwerze i wtedy one nie będą poprawnie wyświetlane - a zastosowanie zmiany we wszystkich plikach txt nie wchodzi w rachubę...

Jakieś lepsze rozwiązanie?
Go to the top of the page
+Quote Post
trueblue
post 9.02.2016, 14:22:46
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Chodzi dokładnie o parsowanie, to o czym pisze w artykule.
Nie wiem dlaczego sądzisz, że z innymi plikami będziesz mieć problem, przecież jest dyrektywa, która sugeruje parsowanie tylko test.txt.

Możesz również utworzyć regułę przepisującą w .htaccess, nie mając pliku tekstowego lecz php.


--------------------
Go to the top of the page
+Quote Post
freewalker
post 10.02.2016, 20:58:54
Post #9





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


Dzięki, zrobiłem jak w tym linku co podałeś - w sumie słuszna droga ale teraz nasuwa mi się pytanie, bo zrobiłem tak w robots.txt:

  1. <?php
  2. if($_SERVER['SERVER_NAME']=="mojastrona.co.uk") echo "Sitemap: http://mojastrona.co.uk/sitemap1uk.xml";
  3. elseif($_SERVER['SERVER_NAME']=="mojastrona.de") echo "Sitemap: http://mojastrona.de/sitemap1de.xml";
  4. ?>
  5. User-agent: magpie-crawler
  6. Disallow: /
  7.  
  8. User-agent: WikiDo
  9. Disallow: /
  10.  
  11. User-agent: AhrefsBot
  12. Disallow: /
  13.  
  14. User-agent: MJ12bot
  15. Disallow: /


teraz wszystko co poza klamrami php jest parsowane jako html. Aby zachować strukturę robots.txt , w której każda dyrektywa powinna być od nowej linii powinienem używać <br/> żeby przejść do następnej linii? Bo obecnie po wyświetleniu mam wszystko w jednej linii pisane i raczej nie jest to dobrym plikiem robots.

Pytanie jeszcze odnośnie crawlerów, czy one zawsze "wchodzą" na plik tak jak użytkownik? PHP zawsze wyświetli taką samą wartość SERVER_NAME dla robota jak i internauty? Bo jestem zielony w robotach smile.gif

Ten post edytował freewalker 10.02.2016, 20:59:41
Go to the top of the page
+Quote Post
trueblue
post 10.02.2016, 21:11:48
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Wszystko poza klamrami jest parsowane jako html?
Pozostawię to bez odpowiedzi.

https://www.google.pl/search?q=php+text+files+newline


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 10.02.2016, 22:29:17
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A może po prostu ustawić

header("Content-Type: text/plain");

zamiast kombinować?
Go to the top of the page
+Quote Post
trueblue
post 10.02.2016, 22:39:14
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie pomoże to na zbitkę:
Kod
Sitemap: http://mojastrona.pl/sitemap1pl.xmlUser-agent: magpie-crawler


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 11.02.2016, 08:14:05
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Albo ja mam problem z głową albo...

  1. <?php
  2. header("Content-Type: text/plain");
  3. if($_SERVER['SERVER_NAME']=="mojastrona.co.uk") echo "Sitemap: <a href="http://mojastrona.co.uk/sitemap1uk.xml&quot;;" target="_blank">http://mojastrona.co.uk/sitemap1uk.xml";</a>
  4. elseif($_SERVER['SERVER_NAME']=="mojastrona.de") echo "Sitemap: <a href="http://mojastrona.de/sitemap1de.xml&quot;;" target="_blank">http://mojastrona.de/sitemap1de.xml";</a>
  5. else echo "Sitemap: <a href="http://mojastrona.pl/sitemap1pl.xml&quot;;" target="_blank">http://mojastrona.pl/sitemap1pl.xml";</a>
  6. ?>
  7.  
  8. User-agent: magpie-crawler
  9. Disallow: /
  10.  
  11. User-agent: WikiDo
  12. Disallow: /
  13.  
  14. User-agent: AhrefsBot
  15. Disallow: /
  16.  
  17. User-agent: MJ12bot
  18. Disallow: /


Output:
Kod
Sitemap: http://mojastrona.pl/sitemap1pl.xml
User-agent: magpie-crawler
Disallow: /

User-agent: WikiDo
Disallow: /

User-agent: AhrefsBot
Disallow: /

User-agent: MJ12bot
Disallow: /
Go to the top of the page
+Quote Post
trueblue
post 11.02.2016, 08:38:10
Post #14





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Albo złamałeś linię, czego nie było:)

Tak, można headerem.


--------------------
Go to the top of the page
+Quote Post
freewalker
post 11.02.2016, 14:15:33
Post #15





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


Temat do zamknięcia, poradziłem sobie traktując łamanie wiersza htmlowym <br/>, sprawdzając plik robots.txt przechodzi pozytywnie testy pod każdą domeną. Dzięki za pomoc:)

Cytat(trueblue @ 10.02.2016, 21:11:48 ) *
Wszystko poza klamrami jest parsowane jako html?
Pozostawię to bez odpowiedzi.

https://www.google.pl/search?q=php+text+files+newline


dobra dobra, już nie czepiajmy się słówek, niech będzie "wyświetlane" bo fakt, nie parsujemy htmla w ten sposob ;D
Go to the top of the page
+Quote Post
trueblue
post 11.02.2016, 14:55:50
Post #16





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie łam wiersza żadnym <br/>. Popatrz jak to będzie wyglądać w źródle i jak robot zobaczy...

Przy okazji, skoro masz mapy pod różnymi domenami, to warto również ujednolicić ich nazwy, stosując analogiczną metodę do generacji mapy jak do robots.txt.
Co będzie jeśli robot nie otworzy robots.txt, a będzie chciał otworzyć mapę, myślisz, że znajdzie sitemap1pl.xml?


--------------------
Go to the top of the page
+Quote Post
freewalker
post 11.02.2016, 16:01:36
Post #17





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


korzystałem z innego sprawdzania i nie było błędów ale w google webmaster tools faktycznie wyłapało łamanie przez <br/>, przesłanie nagłówka text/plain faktycznie rozwiązało sytuację.

Nastawiam się głównie na google, zgłosiłem mapę witryny więc nie powinien mieć problemu z otwarciem sitemap1uk i innych... a wrzucenie wszystkich linków z 3 krajów trochę powiększy plik - chyba, że skorzystam z include..

Czyli sitemap.xml wyłapie każdy robot?
Go to the top of the page
+Quote Post
trueblue
post 11.02.2016, 16:18:32
Post #18





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A dlaczego miałoby powiększyć plik, przecież do polskiej mapy nie wrzucasz angielskich linków.


--------------------
Go to the top of the page
+Quote Post
freewalker
post 11.02.2016, 16:23:34
Post #19





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


nie w tym rzecz, jak miałbym robić jeden plik to wrzuciłbym wszystkie linki, polskie, angielskie, niemieckie ale lepiej będzie chyba tak zrobić?:

--plik sitemap.xml
  1. <?php
  2. if(polska) include_once('sitemap_polska.xml');
  3. elseif(niemcy) include_once('sitemap_niemcy.xml');
  4. else include_once('sitemap_anglia.xml');
  5. ?>

oczywiście "polska" i "niemcy" to żadna zmienna ani nic, mają przedstawiać tylko logikęwink.gif

w htaccess dodac parsowanie pliku sitemap.xml przez php, jak wcześniej z robots, a jaki header przesłać, żeby xml był poprawnie odczytany?

Ten post edytował freewalker 11.02.2016, 16:24:16
Go to the top of the page
+Quote Post
trueblue
post 11.02.2016, 16:47:00
Post #20





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W tym rzecz, że nie łączysz kilku map dla różnych wersji językowych w jedną. Nigdzie tego nie sugerowałem, pisałem o ujednoliceniu nazwy.

  1. header('Content-Type: text/xml; charset=utf-8');


Ten post edytował trueblue 11.02.2016, 16:47:30


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 05:45