Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie
Pozycjonowanie i Optymalizacja > Projektowanie stron > PHP i MySQL
KreatorMarket
Witam
Będę wdzięczny za praktyczną podpowiedź jak jest lepiej.
Mam kilka ok 10 domen w home.pl podpiętych pod sklep z tym, że z tego co słyszałem najlepiej zrobić przekierowanie 301 i tu pytanie, czy dla każdej z domen będę musiał zrobić plik index.php z kodem + przekierowania wklepywać do odpowiednich podkatalogów na serwerze:

<?php
if($_SERVER['HTTP_HOST']=='domena1.pl' || $_SERVER['HTTP_HOST']=='www.domena1.pl')
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domena2.pl".$_SERVER['REQUEST_URI']);
header("Connection: close");
exit;
}
?>

Czy może przekierowanie DNS podobno w panelu home z tym że tej opcji w ogóle nie rozumiem i będę wdzięczny za instruktaż!?!?
Z góry dziękuję
KreatorMarket
OK to może ktoś mi powie czy tu jest wszystko w porządku??
KOD
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxx\.eu$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?kreatormarket\.com.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxx\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?kreatormarket\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxorm\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxa\.pl$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?xxxxxxxxxxx\.pl$ [NC]
RewriteRule ^(.*)$ http://www.kreatormarket.pl/$1 [R=301,L]

Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  RewriteBase /
  RewriteRule ^product/image/([0-9]+)/(.+)$ index.php?module=stProduct&action=showImage&folder=$1&image=$2 [L]

  RewriteRule ^(st_frontend_[0-9a-f]+\.([^.]+)\.(min.css|min.js))$ /sfMinifyPlugin.php?f=/$1&e=$2 [L,NC]

  # we skip all files with .something
  # comment the following 3 lines to allow periods in routes



  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"
<IfModule mod_headers.c>
  <Files ~ "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
  </Files>
</IfModule>

<IfDefine sote>
<FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$">
   AddHandler x-httpd-fastphp5 .inc .php .php3 .php4 .php5 .phtml
</FilesMatch>
</IfDefine>
Mion
CYTAT(KreatorMarket @ 1.02.10 - 11:03) *
z tym, że z tego co słyszałem najlepiej zrobić przekierowanie 301 i tu pytanie, czy dla każdej z domen będę musiał zrobić plik index.php
Przekierowanie, ale z czego i na co i w jakim celu ???
KreatorMarket
Z domen podpiętych do sklepu na tylko jedna z nich. Zamiast kilku tysięcy podstron zaklepanych w google w głownej domenie podzielilo mi nie koniecznie po rowno na praktycznie wszystkie inne podpiete do sklepu. Interesuje mnie tylko w tym momencie czy wszystko jest ok w kodzie z pliku .htaccess
Pierwsze 14 wierszy kodu dopisane jest przeze mnie reszta już była i nie wiem czy coś się nie będzie gryzło. Obsługa z Home napisała, że tak może być ale skąd ja mam wiedzieć czy po drugiej stronie była osoba kompetentna więc pytam.
Mion
@ale skąd ja mam wiedzieć czy po drugiej stronie była osoba kompetentna więc pytam.
A skąd możesz wiedzieć, że tutaj znajdzie się osoba kompetentna - napiszesz na kolejnym forum to samo biggrin.gif
http://www.forum.optymalizacja.com/index.php?showtopic=62516
KreatorMarket
Dzięki za link i zainteresowanie, niestety nie jestem aż tak biegły w tym wszystkim (większość z tego co jest tam napisane nie rozumiem), więc będę wdzięczny za info, czy kod umieszczony przeze mnie wcześniej z .htaccess na serwerach home.pl a katalogu sklepu /soteshop (wszystkie powyższe domeny mają przekierowanie na ten katalog)będzie "łączył" całą "moc i magię" moich domen do tylko jednej a tym samym czy jest to wszystko prawidłowo napisane?
Jak długo taki proces przeindeksowania może trwać.
Z góry bardzo dziękuję za odpowiedź
Mion
Przekierowanie 301 nie działa w ten sposób, że masz np 100 domen i postanowisz je przekierować na jedną i dzięki temu uzyska lepszą pozycję smile.gif Przekierowanie 301, a właściwie odpowiedź 301 serwera HTTP ma na celu zupełnie coś innego.
KreatorMarket
Rozwiniesz wypowiedź! To co ma na celu? Przede wszystkim chcę aby podstrony były zindeksowane pod jedną domeną.
Jeszcze czy taki kod bierze pod uwagę www. i bez www. bo po wpisaniu site:costam.pl a site:www.costam.pl wyrzuca inne wyniki.
Mion
Nie rozwinę...
10.3.2 301 Moved Permanently

@bo po wpisaniu site:costam.pl a site:www.costam.pl wyrzuca inne wyniki.
Tak, bo z punku widzenia google są to dwa adresy uwzględnia w tym/nie uwzględnia subdomen
KreatorMarket
Prosto i zwięźle lubie takie konkrety.
OK to inaczej. Mam 14 domen i chcę aby 13 z nich kierowało do tej jednej.
Przy czym nie chcę aby podstrony były indeksowane dla tych 13 tylko dla tej jednej.
Czy uzyskam taki efekt przy tym kodzie?
Czy odindeksuje mi resztę domen z www. i bez www?
Jak długo to może trwać?
Rozumiem że podstrony zaindeksowane pod domeną xxx muszą zniknąć aby zaindeksować się pod domeną yyy?
Generalnie efekt pożądany to zaindeksowane podstrony dla jednej domeny!
Kod po poprawkach (wskazówki od pracownika SOTE)
KOD
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
  RewriteEngine On
  
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfasdfi\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasfd\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdf\.eu$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdf\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfa\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdf\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?kreatormarket\.com.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfa\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?kreatormarket\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfasfd\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfasfd\.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?asdfasdfasdf\.pl$ [NC]
RewriteRule ^(.*)$ http://www.kreatormarket.pl/$1 [R=301,L]

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  RewriteBase /
  RewriteRule ^product/image/([0-9]+)/(.+)$ index.php?module=stProduct&action=showImage&folder=$1&image=$2 [L]

  RewriteRule ^(st_frontend_[0-9a-f]+\.([^.]+)\.(min.css|min.js))$ /sfMinifyPlugin.php?f=/$1&e=$2 [L,NC]

  # we skip all files with .something
  # comment the following 3 lines to allow periods in routes



  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"
<IfModule mod_headers.c>
  <Files ~ "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
  </Files>
</IfModule>

<IfDefine sote>
<FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$">
   AddHandler x-httpd-fastphp5 .inc .php .php3 .php4 .php5 .phtml
</FilesMatch>
</IfDefine>
Mion
Odpowiedź 301 ma na celu poinformowanie klienta, że żądany zasób został na stałe przeniesiony i wszystkie następne żądania powinny być kierowane pod adres który zostanie podany w odpowiedzi serwera.

Tak zdefiniowana reguła :
RewriteRule ^(.*)$ http://www.kreatormarket.pl/$1 [R=301,L]
wymusza 100% zgodność adresów na kontach, A, B, C, D ... docelowy N
czyli jak klient żąda na A.pl/jakas-strona.html w odpowiedzi zostanie odesłany do N.pl/jakas-strona.html i tym sposobem strony w domenach A, B, C zostaną wy indeksowane z google.

Oczywiście nie wystąpi takie zjawisko jak np serwis A na jakieś zapytanie jest na pozycji 11, B na te same 6, C - 9 to nie oznacza, że ten N dzięki temu znajdzie się na wysoko smile.gif. Z drugiej strony jeśli jakaś podstrona na B, C, D itd była wysoko jest duża szansa, że w tym miejscu pojawi się aktualna strona N na którą było ustawione przekierowanie.

Ile dokładnie czasu to zajmie - nie mam pojęcia, ale będzie zależne od aktywności botów na domenach A, B, C, D itd.
kilas88
KreatorMarket, jeśli chcesz robić przekierowania z innych domen do jednej głównej to musisz na tych innych zamieścić plik .htaccess tylko z tym jednym przekierowaniem.

A żeby było wydajniej*, możesz zrobić coś w stylu:

KOD
<?php

  Header('HTTP/1.1 301 Moved Permanently');
  Header('Location: http://www.kreatormarket.pl/');

?>


* wydajność pod tym względem, że nie trzeba wykonywać dwóch połączeń, jak w przypadku rozwiązania z mod_rewrite.
Mion
@A żeby było wydajniej*, możesz zrobić coś w stylu:
Co takiego hmmm.gif

W proponowany wyżej sposób przekierują tylko żądania tyczące pliku index reszta żądań zostaje nieobsłużona co w większości wypadków jest niewłaściwe.
kilas88
Faktycznie, jeśli ktoś spodziewa się wizyt lub linkowania typu:
domena2.pl/fsdgfds/gf/ds/gds/gf/ds/gds/g/ds/gdsg
to lepiej zrobić ogólne przekierowanie w .htaccess smile.gif
Mion
Przeważnie spodziewamy się żądań takich adresów jakie ma serwis wiec nic w tym dziwnego, należy przekierować również pozostałe na odpowiadające im strony w nowej lokalizacji, lub jeśli linkowanie nie jest zgodne na stronę główną serwisui.

A co z tą rzekomą niewydajnością o której piszesz - nadal nie wiemy co masz na myśli co.gif
KreatorMarket
Bardzo dziękuję.
Rozumiem, że adres a.pl i www.a.pl będzie odindeksowany.
Jeszcze pytanie czy puszczenie tzw ping-a przyspieszy ten proces? I w sumie jak to się robi w google?
Mion
Ping "przyciągnie" google bota który zauważy, że jest przekierowanie i uruchomi się docelowy proces przeindeksowania...
KreatorMarket
Czy w Pana programie do pingowania wpisać główną stronę www.costam.pl czy z ścieżką do www.costam.pl/sitemap.xml?
Czy to w ogóle ma jakieś znaczenie?
Mion
Wszelkie pytania tyczce programu Ping SEO Maaster proszę zadawać w wątku jemu poświęconym:
http://www.forum.optymalizacja.com/index.p...5&start=225
...
kilas88
CYTAT(Mion @ 8.02.10 - 00:24) *
Tak zdefiniowana reguła :
RewriteRule ^(.*)$ http://www.kreatormarket.pl/$1 [R=301,L]
wymusza 100% zgodność adresów na kontach, A, B, C, D ... docelowy N
czyli jak klient żąda na A.pl/jakas-strona.html w odpowiedzi zostanie odesłany do N.pl/jakas-strona.html i tym sposobem strony w domenach A, B, C zostaną wy indeksowane z google.

Kiedy nie używać mod_rewrite? - taka mała autopromocja z mojej strony smile.gif pytałeś co ma wspólnego mod_rewrite z wydajnością? Proszę przeczytać ostatni komentarz.

Ogólnie wykonywanie dużej ilości wyrażeń regularnych nie jest najlepszym pomysłem, o czym z całą pewnością wiesz.
KreatorMarket
CYTAT(kilas88 @ 15.02.10 - 12:23) *
CYTAT(Mion @ 8.02.10 - 00:24) *
Tak zdefiniowana reguła :
RewriteRule ^(.*)$ http://www.kreatormarket.pl/$1 [R=301,L]
wymusza 100% zgodność adresów na kontach, A, B, C, D ... docelowy N
czyli jak klient żąda na A.pl/jakas-strona.html w odpowiedzi zostanie odesłany do N.pl/jakas-strona.html i tym sposobem strony w domenach A, B, C zostaną wy indeksowane z google.

Kiedy nie używać mod_rewrite? - taka mała autopromocja z mojej strony smile.gif pytałeś co ma wspólnego mod_rewrite z wydajnością? Proszę przeczytać ostatni komentarz.

Ogólnie wykonywanie dużej ilości wyrażeń regularnych nie jest najlepszym pomysłem, o czym z całą pewnością wiesz.

W takim przypadku jakie rozwiązanie wg. Ciebie jest dla mnie najlepsze?
kilas88
CYTAT(KreatorMarket @ 16.02.10 - 01:13) *
W takim przypadku jakie rozwiązanie wg. Ciebie jest dla mnie najlepsze?

Wg mnie, od najlepszej :
  1. przekierowanie DNS,
  2. plik konfiguracyjny Apache dla wybranych folderów,
  3. .htaccess
  4. php/perl/html/etc
  5. javascript


przy czym 1 i 2 z wykorzystaniem regułki:
KOD
Redirect 301 / http://nowy.adres.pl/
Mion
@Redirect 301 / http://nowy.adres.pl/
Owszem, ale jak nie potrzebujesz przekierowania 1:1 tzn nowy serwis ma taką samą strukturę jak stary i zależy na przekierowaniu poszczególnych adresów na ich odpowiedniki w nowym serwisie.

@Ogólnie wykonywanie dużej ilości wyrażeń regularnych nie jest najlepszym pomysłe
Bardzo niesprecyzowana uwaga, bo dla jednego dużo to będzie 10, a innego 500. Poza tym należy stosować takie wyrażenia które dopasują się do danego ciągu/reguły co znacznie zmniejsza ogólną ilość linijek regułek. Co więcej, w kontekście przekierowania nie stanowi to większego problemu, bo żądania wykonywane są tylko raz i klient "opuszcza" serwer nie generując już obciążenia.

Co do samej wydajności modrewritte to też sprawa wygląda inaczej, bo wysoko obciążone serwisy wymagają zupełnie innego podejścia do kwestii wydajności, ale to już inne zagadnienie smile.gif
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-2010 Invision Power Services, Inc.