Uniwersalne przekierowanie 301
30 stycznia 2009
Na temat przekierowań 301 napisałem już sporo (tu i tu) ale tym razem mam coś bardzo smakowitego
Przekierowania 301 najczęściej używa się gdy chcemy aby nasza strona zawsze pojawiała się z lub bez "www". Oczywiście podawałem już rozwiązania tego problemu w .htaccess (patrz linki wyżej) ale miały one jedną wadę: trzeba było wpisać adres swojej witryny. A może da się prościej?
Owszem, da się, chociaż ja nie znalazłem rozwiązania w google. W internecie jest mnóstwo identycznych informacji opisujących standardowe przekierowania ale nikt nie pokusił się o stworzenie jednego uniwersalnego.
Oto one:
Przekierowanie z "bez www" na "z www":
-
RewriteEngine On
-
RewriteCond %{HTTP_HOST} !^www\. [NC]
-
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Przekierowanie z "www" na "bez www":
-
RewriteEngine On
-
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
-
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
I już
Nie trzeba więcej się martwić o wpisywanie całego adresu do regułki za każdym razem gdy robimy przekierowanie. Wszystkie przekierowania załatwisz teraz prostą metodą kopiuj wklej i nie musisz mnożyć regułek jeżeli do jednego serwera kieruje kilka domen.
EDIT
Właśnie znalazłem na drupal.org dyskusję na temat uniwersalnego przekierowania. Odzyskuję wiarę w internet hehe
Ich rozwiązanie jest prawie identyczne z moim. Jest jedna nic nieznacząca różnica w pierwszym przekierowaniu. Ale jeżeli miałbym się czepiać to uważam, że moje jest lepsze
Blog przede wszystkim o Internecie i mojej pasji jaką jest tworzenie stron www. Ale nie ograniczam się do jednej tematyki, piszę o wszystkim o czym mam ochotę :-)
Anmato napisał: 19.02.09 o godzinie 21:26
Jesteś specem od 301 hehe
Anmato napisał: 19.02.09 o godzinie 21:57
I teraz poprosimy o ten kod w PHP
MariuszT napisał: 19.02.09 o godzinie 23:04
Pisane z głowy ale powinno być ok
< ?php
if(substr($_SERVER['HTTP_HOST'], 0, 3) != 'www') {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.„. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
header(„Connection: close”);
exit;
}
?>
Jacek napisał: 05.04.09 o godzinie 23:57
DZięki przed chwilą wstawiłem przekierowanie na mojej www! Pozdawiam
karpiu napisał: 29.05.09 o godzinie 9:59
Witam.
Ja mam pytanie związane z tematem.
Przekierowania działa mi poprawnie po za kilkoma wyjątkami.
Są to przekierowania dla wyświetlanych zdjęć. (adres zdjęcia jest przekazywany do PHP, jest tam ono podpisywane i dopiera wtedy wyświetlane) W treści strony pojawiają się adresy do zdjęć które maja zostać przetłumaczone i podmienione przez rewriterule. I kicha, w logu widzę informacje o podmianie treści przekierowania, poprawny wynik przekierowania który po wpisaniu w przeglądarce daje pożądany wynik.
Niestety na docelowej stronie gdzie powinny się wyświetlić zdjęcia, nic się nie dzieje. Wygląda to tak jak sam apache nie pozwalał na podmianę adresów w treści strony. Tłumaczone są tylko te adresy które docelowo maja się wyświetlić w polu adresu przeglądarki.
Ma ktoś może jakiś pomysł co może odpowiadać za taka sytuacje ?
MariuszT napisał: 01.06.09 o godzinie 13:39
Trudno powiedzieć, nie wszystko zrozumiałem. Może zdjęcia ładują Ci się z cache przeglądarki? Prześledź snifferem wszystkie nagłówki i kolejne przekierowania. Polecam do tego celu użyć Firebug’a, który ma wbudowanego przyjemnego snifferka śledzącego tylko to co się dzieje w przeglądarce.
A tak w ogóle to mam nadzieję, że nie „podpisujesz” (cokolwiek to znaczy) zdjęć za każdym razem gdy je wywołujesz?
virusxd napisał: 27.07.09 o godzinie 1:27
Ja wole moje przekierowanie za pomocą CNAME, bez plików, bez zbędnego pisania i zawsze działa
Po prostu zamiast wpisać ścieżkę do katalogu ze stroną wpisałem drugi adres z www.
MariuszT napisał: 31.07.09 o godzinie 22:49
Nie każdy ma takie możliwości.
Luzak napisał: 03.09.09 o godzinie 16:20
Dzięki za info.
Mam jeszcze pytanie odnośnie przekierowania ze strony głównej/index.php na stronę główną. Chcę uniknąć indeksowania dwóch stron i nie wiem co wstawić w .htaccess.
Będę wdzięczny za pomoc.
Pozdrawiam
Luzak napisał: 03.09.09 o godzinie 19:36
Mam małe pytanko. Szukam rozwiązania dla problemu przekierowania ze starego sklepu na nowy sklep. Oba sklepy pod oscommerce. Stary sklep na subdomenie a nowy na domenie głównej. Stary sklep mocno rozpowszechniony w sieci. Myślę o przekierowaniu 301 ale nie wiem jak skonstruować takie przekierowanie. Niestety w sklepie zmieniły się nietylko domeny ale również nazwy produktów.
Oto przykład:
Stary sklep
http://www.sklep.domena.pl/blender-sb4-p-1811.html
Nowy sklep
http://www.domena.pl/blender-sb4-p-84.html
Czy można stworzyć jakiś „myk”, który będzie szukał po podobnych nazwach?
Będę wdzięczny za pomoc.
MariuszT napisał: 03.09.09 o godzinie 22:17
Hej Luzak
Odpowiedź na pytanie numer 1:
RewriteEngine On
RewriteRule ^index.php$ / [R=301,L]
To tak na szybko napisane, nie testowałem ale powinno działać
Gdyby jednak coś było nie tak to pisz, potestuję
Odpowiedź na pytanie numer 2:
Przekierowanie z subdomeny na nową domenę zrobisz bez problemu (zalecam lekturę moich wpisów na tym blogu o 301 i powinieneś dać sobie spokojnie radę
).
Co do produktów to obawiam się, że .htaccess Ci tu nie pomoże. Jeżeli nazwy/numery ID produktów się zmieniły to jedyny sensowny sposób to zabawa z PHP. Czyli zapominasz całkowicie o .htaccess i przy uruchomieniu strony w PHP sprawdzasz czy istnieje dany produkt. Jeżeli nie istnieje to go szukasz i jak znajdziesz to robisz przekierowanie. Dla optymalizacji najlepiej zrobić osobną tabelę gdzie będą zapisane informacje o produktach, ich stary i nowy adres. W ten sposób łatwiejsze będzie wyszukiwanie, oszczędniejsze niż szukanie na ślepo po całej tabeli z produktami. Niestety prościej się nie da i gotowej regułki nie mogę Ci podać.
Luzak napisał: 10.09.09 o godzinie 12:06
Witaj. Dzięki za pomoc. Mam jeszcze jedno pytanie. Próbuje wrzuciś do .htaccess ręczne przekierowanie 301 na nowy adres przynajmniej dla najważnieszych stron dla których zmieniła się nie tylko domena ale i link. Jednak opierając się na kodzie
RewriteRule ^kanaly-rss/?$ /kanaly-informacyjne/ [R=301,L]
pozwala zrobić mi to tylko dla jednego adresu. Gdy wpisuję drugą taką samą linię dla innego linku strona mi sie wywala. Jak to zrobić i czy wogóle jest to możliwe?
Pozdrawiam
Luzak
MariuszT napisał: 11.09.09 o godzinie 10:42
„Gdy wpisuję drugą taką samą linię dla innego linku” – wytłumacz dokładniej co robisz.
Pamiętaj, że możesz używać wyrażeń regularnych i załatwić jedną linijką przekierowanie wielu stron o ile do wszystkich da się zastosować pojedynczą regułę.
Luzak napisał: 11.09.09 o godzinie 18:33
Już rozwiązałem ten problem – miałem błąd i stąd to zamieszanie.
Zasadniczo mam do Ciebie jeszcze jedno pytanie.
Pisałeś coś takiego:
„Co do produktów to obawiam się, że .htaccess Ci tu nie pomoże. Jeżeli nazwy/numery ID produktów się zmieniły to jedyny sensowny sposób to zabawa z PHP. Czyli zapominasz całkowicie o .htaccess i przy uruchomieniu strony w PHP sprawdzasz czy istnieje dany produkt. Jeżeli nie istnieje to go szukasz i jak znajdziesz to robisz przekierowanie. Dla optymalizacji najlepiej zrobić osobną tabelę gdzie będą zapisane informacje o produktach, ich stary i nowy adres. ”
Gdzie znajdę informacje na ten temat jak zrobić taką tabelę. Ten temat jest dla mnie całkowitą nowością.
Będę wdzięczny za pomoc.
Pzdr. Luzak
MariuszT napisał: 11.09.09 o godzinie 19:26
Przykro mi, chciałbym Ci pomóc ale obawiam się, że nie poradzisz sobie bez wiedzy programistycznej. U Ciebie trzeba zobaczyć jak ta strona jest zbudowana i na podstawie tej wiedzy przygotować rozwiązanie. Musi to zrobić programista. Co więcej, nie da się tego zrobić nie mając dostępu do Twojego serwera, kodu strony, bazy danych.
Luzak napisał: 14.09.09 o godzinie 11:15
ok, dzięki za pomoc.
Pzdr.
Luzak
wolvverine napisał: 21.10.09 o godzinie 15:04
dodanie R=301 do takiego przekierowania z kolei wywali serwer:
RewriteRule ^mapa_strony$ index.php?id=site_map [NC,L]
MariuszT napisał: 21.10.09 o godzinie 15:48
Nie wiem czemu to generuje błąd. Tak na oko to nie powinno, najprostsze z możliwych przekierowań. Nie sprawdzałem u siebie.
Helper napisał: 29.12.09 o godzinie 11:04
Hej,
Mam trochę inny problem, acz też związany z htaccess dlatego koment w tym poście. Chciałbym zrobić przekierowanie wszystkich podstron – konkretnie chodzi o to, że obecnie podstrony dublują się i występują w takich wersjach:
1. http://www.przyklad.pl/plik.ph.....038;cat=20
2. http://www.przyklad.pl/oto,ta,strona,11111,20.html
Chciałbym, żeby z jednej automatycznie przekierowywało na drugą, ale żeby załatwić to dla wszystkich podstron (analogicznie zmienia się tylko id i cat) za jednym razem.
Jest taka możliwość?
MariuszT napisał: 29.12.09 o godzinie 18:57
Zobacz piąte okienko z kodem na tej stronie http://www.tarnaski.eu/blog/przekierowanie-301/
Użyj wyrażeń regularnych w .htaccess. Niestety jeżeli w nowych adresach używasz np. tytułu artykułu to .htaccess będzie bezradny, nie będzie potrafił pobrać tego tytułu bo w starym linku nie było go w adresie. Wtedy pozostaje Ci jedynie przekierowanie w PHP.
q67 napisał: 03.03.10 o godzinie 15:50
witam
Problem brzmi:przedtem google pozycjonowało mnie po adresie domeny, zmieniłem serwer na darmowy i teraz google indexuje mnie po adresie darmowego serwera. Co z tym poradzić ,czy przekierowanie 301 coś może pomóc ?
MariuszT napisał: 03.03.10 o godzinie 17:08
Tak, zrób przekierowanie na starym serwerze na nowy adres.
q67 napisał: 04.03.10 o godzinie 10:34
tylko,że stary serwer jest juz nieaktywny.
MariuszT napisał: 04.03.10 o godzinie 12:34
Musisz mieć dostęp do starej domeny (folderu na który ta stara domena wskazuje) aby zrobić przekierowanie na nowy adres.
q67 napisał: 04.03.10 o godzinie 16:28
Chyba niezrozumiałeś… Domena jest ciągle ta sama tylko serwer gdzie trzymam pliki zmieniłem . i google teraz źle pozycjonuje moją strone(miejsce te same tylko pod adresem nowego serwera).
MariuszT napisał: 04.03.10 o godzinie 17:31
Napisałeś o nowym adresie więc myślałem, że go zmieniłeś na stałe, pozbyłeś się domeny. Jeżeli nie chcesz aby google Cię indeksowało po nowym adresie to zrób przekierowanie z tego błędnego adresu na ten dobry.
q67 napisał: 04.03.10 o godzinie 18:10
teraz jeszcze problem bo niemoge utworzyc na serwerze takiego pliku. A serwer też nie obsługuje php. Jakas inna możliwośc ?
MariuszT napisał: 04.03.10 o godzinie 18:40
Możliwe, że w Twoim panelu zarządzania serwerem możesz przekierować domenę na tą która Cię interesuje. Jeżeli nie i nie działa Ci PHP ani inny język server side i nie możesz utworzyć pliku .htaccess lub serwer nie potrafi go obsłużyć to (pomijając metody do których na pewno nie masz dostępu) nie przychodzi mi żadne rozwiązanie do głowy.
MŁK napisał: 22.03.10 o godzinie 19:43
Witam,
przekierowanie na „bez www” bardzo mi się przydało,
jednak mam pytanie.
Mam trzy domeny: domena.pl, domena.eu i domena.cba.pl
Wszystkie są skierowane na ten sam serwer.
Czy istnieje możliwość takiej konfiguracji pliku .htaccess, aby wszystkie kierowały na domenę .pl lub .eu (mimo że ta sama strona jest na jednym serwerze)?
MŁK napisał: 22.03.10 o godzinie 21:10
Jeszcze raz: Nie zauważyłem innego artykułu na ten temat. Pomogły mi oba i to bardzo. Oby tak dalej
MariuszT napisał: 23.03.10 o godzinie 11:36
Czyli mam rozumieć, że już sobie poradziłeś?
MŁK napisał: 23.03.10 o godzinie 11:49
Tak, nie zauważyłem tego na początku artykułu „sporo (tu i tu)” i na linka nie kliknąłem. Pozdrawiam.
Kojot napisał: 12.05.10 o godzinie 16:49
Panowie, przymierzam się do nowej domeny i przekierowania 301. Wie ktoś może, jak sprawdzić, czy nowa domena „usamodzielniła” się już, ma własny PR i można na stałe zrezygnować ze starej (zawierającej przekierowanie) bez obawy że wszystko się sypnie?
MariuszT napisał: 12.05.10 o godzinie 17:15
Pisałem o tym już raz ale napiszę ponownie.
Póki istnieje przekierowanie to siła PR, linków itd. jest przekazywana. Usuniesz przekierowanie (np. nie opłacając starej domeny) i wszystko zostanie utracone. Nie wiem czemu ludzie sądzą, że przekierowanie 301 jest jednorazowe i po jakimś czasie można je usunąć bez konsekwencji…
PS
Aby przekonać się czy przekierowanie już w pełni działa można sprawdzić site starej domeny lub np. sprawdzić czy nowa domena trafiła w serpach na pozycje starej. Nie ma jednak metody, która jasno odpowie: tak, Google już całkowicie wziął pod uwagę Twoje przekierowanie.
Kojot napisał: 17.05.10 o godzinie 16:57
Dzięki MariuszT. Wyciągam z tego wniosek, że aby móc zrezygnować ze starej domeny i jednocześnie zachować przekazany PR i pozycje nowej, trzeba, po przekierowaniu, sukcesywnie pozycjonować nową i przekazywać bezpośrednio jej linki, które prowadziły wcześniej do starej. I dużo cierpliwości. I jeśli za rok usunę przekierowanie, 100% pewności nadal miał nie będę, że przekazany PR zostanie. Skądinąd może być też wyższy, jeśli np. w międzyczasie zdobyłem dobre linki do nowej.
MariuszT napisał: 17.05.10 o godzinie 17:04
Zgadza się. Przekierowanie 301, chociaż działa i jest jedynym sensownym sposobem na zachowanie PR, pozycji itd. po zmianie adresu, to niestety nie jest super idealne. Przekierowanie musi być aktywne najdłużej jak się da aby był pożądany efekt.
Marys napisał: 05.08.10 o godzinie 12:40
Mam pytanie,
Czy można przekierować ścieżkę do katalogu na konkretną domenę? Chodzi o to, że posiadając kilka domen, które są przypięte do głównego katalogu na serwerze można się trochę wkopać w niezłe problemy, np.
Mam domenę pierwsza.pl, która jest przypięta do katalogu:
nazwaserwera.pl/pierwsza
Jeśli mamy jeszcze inne domeny podpięte pod katalog główny:
druga.pl
trzecia.pl
to możemy uzyskać w wyszukiwarce groteskowy efekt:
druga.pl/pierwsza
trzecia.pl/pierwsza
Jak bronić się przed podobnym przypadkiem?
MariuszT napisał: 05.08.10 o godzinie 22:19
Zmienić strukturę katalogów
A tak na poważnie to wiem, że są dostawcy hostingu, którzy mają takie ustawienia i to nastręcza problemów.
Można sobie z tym poradzić na dwa sposoby.
Sposób 1
W katalogu głównym umieścić .htaccess z regułami: jeżeli domena jest X (w Twoim przykładzie domeny druga.pl i trzecia.pl) i katalog jest Y (u Ciebie „pierwsza”) to przekieruj na domenę Z (u Ciebie pierwsza.pl)
Sposób 2
W katalogu podrzędnym (w Twoim przykładzie katalog „pierwsza”) umieścić .htaccess z regułą: jeżeli domena nie jest X (Twoje pierwsza.pl) to przekieruj na X (ponownie pierwsza.pl).
W sposobie pierwszym można pominąć sprawdzanie domeny ale wtedy musisz się pogodzić z niemożliwością posiadania adresu pierwsza.pl/pierwsza.
Pokombinuj, pomyśl, jak się nie uda to postaram się pomóc w stworzeniu konkretnego kodu.
Michał napisał: 06.08.10 o godzinie 17:55
Radzę przekierować wszystkie żądania na index.php ja tak robię i dopiero php zajmuje się dalszą obróbką danych. Dlaczego? Łatwiej przenieść skrypt na inny serwer, miałem już przeprawę z OVH, ponieważ tam PHP jest zainstalowane jako moduł CGI i nie można używać php_flag/php_value tylko SetEnv.
W htaccess najlepiej zrobić to tak:
RewriteCond %{HTTP_HOST} !^(www\.)domena.pl [NC]
RewriteRule ^(.*)$ http://www.prawdziwadomena.pl [R=301,L]
A w PHP tak:
if( $_SERVER[ 'HTTP_HOST' ] !== ‘twoj_host’ )
{
header( ‘Location: http://www.prawdziwadomena.pl/‘ . $_SERVER[ 'REQUEST_URI' ] );
}
Pozdrawiam
MariuszT napisał: 09.08.10 o godzinie 15:35
1. Twój komentarz jest zupełnie nie na temat. Co to ma wspólnego z przekierowaniami 301?
2. 301 najlepiej robić w .htaccess a nie w PHP bo nie uruchamiamy wtedy parsera
3. To oczywiste, że przekierowanie wszystkiego na index.php to dobra praktyka ale zapytam jeszcze raz – jaki to ma związek z tematem wpisu??
4. Piszesz o przekierowaniu na index.php natomiast podajesz kod do .htaccess na przekierowanie 301 i kod PHP na zwykłe przekierowanie (nawet nie 301)…
WTF?!
Kamil napisał: 12.08.10 o godzinie 16:53
Ad. 4) Mariusz, a czy czasem „zwykłe przekierowanie” to nie właśnie 301? Wydaje mi się, że to dokładnie 301
MariuszT napisał: 12.08.10 o godzinie 16:56
Mylisz przekierowanie 301 z 302.
Kamil napisał: 12.08.10 o godzinie 19:06
Faktycznie, domyślnie jest 302. A żeby dać 301 to trzeba napisać:
header(„Location: /foo.php”, true, 301);
Teraz już wiem, dzięki. Po prostu myślałem, że standardowo daje 302 – nie doczytałem manuala w tej kwestii.
Michał napisał: 13.08.10 o godzinie 12:01
Chciałem podać ideę a nie gotowy kod. wystarczy dodać true i response code 301
Pozdrawiam
lamer okrutny napisał: 25.08.10 o godzinie 21:54
Hej,
A co wrzucić w .htaccess, żeby http://www.domena.pl było przekierowywane na domena.pl i dodatkowo nieistniejące już stronki typu http://www.domena.pl/nieaktualnastronka.html lub domena.pl/nieaktualnastronka.html przekierowywało na domena.pl? Z góry wielkie dzięki za pomoc – kombinowałem ale przerasta mnie to, ja humanista jestem
MariuszT napisał: 28.08.10 o godzinie 0:50
Zastosuj przekierowanie „z www” na „bez www” a następnie zobacz jak odpowiedziałem na ten komentarz http://www.tarnaski.eu/blog/pr.....mment-3557
mis napisał: 06.01.11 o godzinie 21:10
WItam,
Mam pytanie do takiej sytuacji z przekierowaniem.
Strona http://www.domena.pl jest zaindeksowana przez google linki sa przepisywane do przyjaznych w htaccess i wygladaja tak:
http://www.domena.pl/9,9-jakasnazwa/
teraz dodane zostaly jezyki do strony www i werjsa polska ma nowe linki:
http://www.domena.pl/pl/9,9-jakasnazwa/
W jaki sposob dodac przekierowanie 301 w htaccess aby stare zaindeksowane linki w google bez /pl/ przechodzily na poprawny link ? czyli na:
http://www.domena.pl/pl/9,9-jakasnazwa/
bede wdzieczny za podpowiedz
MariuszT napisał: 06.01.11 o godzinie 23:40
Pokaż proszę Twoje dotychczasowe przekierowania w .htaccess.
mis napisał: 07.01.11 o godzinie 0:24
Witam,
mam standardowo:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
i nastepnie:
na przykladzie zakladki z kontaktem:
RewriteRule ^([a-z]+)/([kontakt\/]+)$ index.php?section=kontakt&do=showContact&lang=$1 [L]
wczesniej gdy jeszcze nie bylo wprowadzonych jezykow ten wpis dla kontaktu wygladal tak:
RewriteRule ^([kontakt\/]+)$ index.php?section=kontakt&do=showContact [L]
na koncu htaccess mam jeszcze przekierowanie nieistniejacych stron do index ale bede to zmieniac na jakis komunikat 404 – chyba bedzie lepiej:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Podsumowujac:
google ma zaindeksowane linki http://www.domena.pl/kontakt/
i musze jakos je przekierowac na:
http://www.domena.pl/pl/kontakt/
oczywiscie jesli normalnie wejdziemy na www to link do kontaktu wyglada prawidlowo i jest z /pl/
mam nadzieje ze cos wymyslimy
czekam na porade i pozdrawiam
MariuszT napisał: 07.01.11 o godzinie 2:23
A próbowałeś tego?
RewriteRule ^kontakt/?$ /pl/kontakt/ [R=301,L]
mis napisał: 07.01.11 o godzinie 10:18
Witam,
Probowalem w srodowisku testowym i najwyrazniej bylo jednak cos nie tak, teraz gdy uruchomilem na serwerze produkcyjnym to zlapalo Twoja regule ktora zreszta sam probowalem juz.
Ale problem pozostaje poniewaz serwis ma kilkaset stron i w htaccess mam regule od artykulow, newsow ktora zalatwia je wszystkie wlasnie z id itd no i tam juz nie bedzie chyba takie proste to przekierowanie. Dla pojedynczych podstron to nie problem jak widac.
regula dla newsow wyglada tak:
RewriteRule ^([a-z]+)/(info)/([0-9]+),(.*)/$ index.php?section=aktualnosci&type=index&id=$3&lang=$1
poprzednio bez /pl/ wygladala tak:
RewriteRule ^(info)/([0-9]+),(.*)$ index.php?section=aktualnosci&type=index&id=$2
linki w indeksie google sa stare czyli:
http://www.domena.pl/info/10,tytul_newsa/
a po wprowadzeniu jezyka sa:
http://www.domena.pl/pl/info/10,tytul_newsa/
takze nie wiem tylko jak zastosowac teraz Twoje przekierowanie.
czekam na ewentualna sugestie i dzieki za zainteresowanie – pozdrawiam
MariuszT napisał: 07.01.11 o godzinie 10:28
Przecież prosiłem o przekierowania, wszystkie
Coś takiego?
RewriteRule ^(info)/([0-9]+),(.*)$ pl/$1/$2,$3/ [R=301,L]
mis napisał: 07.01.11 o godzinie 10:53
Witam ponownie,
Dziala Twoj przyklad, nie podawalem wszystkich regul poniewaz nie chcialem Cie obciazac zbytnio – chodzilo mi o przyklad zebym zlapal i wykonal wszystko sam, teraz dzieki Twoim przykladom sproboje wszystko wykonac i dam znac jak mi poszlo – poki co oba przyklady dzialaja.
Za godzinke dam znac, jesli cos mi nie pojdzie wkleje przyklad
do uslyszenia
mis napisał: 07.01.11 o godzinie 11:44
Witam ponownie,
Juz prawie wszystko udalo sie zamienic, pozostala mi jedna regula z ktora sie mecze:
nowa:
RewriteRule ^([a-z]+)/([0-9]+),([0-9]+)-(.*)$ index.php?section=articles&do=showArticle&level=glowny&id=$3&parent=$2&lang=$1 [L]
ktora przepisuje link do postaci:
http://www.domena.pl/pl/1,2-tytul_artykulu/
a linki zaindeksowane sa:
http://www.domena.pl/artykul/1,2,tytul_artykulu/
czyli zmieniac sie musi artykul na pl i , na -
stara regula:
RewriteRule ^([artykul]+)/([0-9]+),([0-9]+),(.*)$ index.php?section=articles&do=showArticle&level=glowny&id=$3&parent=$2 [L]
caly czas kombinuje zeby nie bylo ze sie obijam
probowalem tak ale nie lapie:
RewriteRule ^(artykul)/([0-9]+),([0-9]+),(.*)$ /pl/$1/$2,$3-$4/ [R=301,L]
pozdrawiam
MariuszT napisał: 07.01.11 o godzinie 11:49
RewriteRule ^artykul/([0-9]+),([0-9]+),(.*)$ pl/$1,$2-$3/ [R=301,L]
mis napisał: 07.01.11 o godzinie 12:18
Witam ponownie,
Dziala Twoja regula super ! analogicznie zmienilem takze podobna regule:
stara:
RewriteRule ^([artykul]+)/([0-9]+),(.*)$ index.php?section=articles&do=showArticle&level=artykuly&id=$2 [L]
nowa:
RewriteRule ^([a-z]+)([0-9]+)-(.*)$ index.php?section=articles&do=showArticle&level=artykuly&id=$2&lang=$1 [L]
i dodalem:
RewriteRule ^artykul/([0-9]+),(.*)$ pl/$1-$2 [R=301,L]
powinno byc chyba OK
Bardzo mi pomogles – dziekuje
Mam jeszcze pytanie odnosnie przekierowan do SSL ja wymuszam aby link byl po https gdy ktos wchodzi np. na login:
http://www.domena.pl/login to rewritem wymuszam https://www.domena.pl/login
RewriteRule ^([a-z]+)/(login)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{SERVER_PORT} !^443$
czy tutaj powinno byc [L,R=301] tez czy moze zostac [L,R], jak to kochane G potraktuje ? jako duble link:
http://www.domena.pl/login
https://www.domena.pl/login
MariuszT napisał: 07.01.11 o godzinie 12:31
Używaj 301 przy przekierowaniach. Niech Google wie, że jest jeden i tylko jeden adres przez Ciebie pożądany.
mis napisał: 07.01.11 o godzinie 13:17
Hej,
Dzieki – bede sie stosowac.
Przy okazji dla innych ktorzy chcieliby aby linki konczyly sie slashem – / oto wpis ktory zastosowalem:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) http://www.domena.pl/$1/ [R=301,L]
dzieki niemu mamy: http://www.domena.pl/kontakt/ zamiast http://www.domena.pl/kontakt
Po kiego choo mi pseudonim napisał: 09.01.11 o godzinie 11:17
Stary jesteś geniuszem – prosto i skutecznie dzięki :]
esder napisał: 09.01.11 o godzinie 22:56
Witam,
Jak za pomocą jednej linijki przekierować różne adresy do formy z dodanym „katalogiem”?, przykładowo:
http://www.adres.pl/strona-1
http://www.adres.pl/strona-2
http://www.adres.pl/strona-3
http://www.adres.pl/strona-4
przekierowane na:
http://www.adres.pl/katalog/strona-1
http://www.adres.pl/katalog/strona-2
http://www.adres.pl/katalog/strona-3
http://www.adres.pl/katalog/strona-4
nigdy chyba tych znaczków nie pojmę w .htaccess :/
esder napisał: 09.01.11 o godzinie 23:02
aha, i żeby przekierowywało tylko podstrony zawierające określone słowo, w tym przypadku „strona”, nie wiem czy w ogóle to możliwe, ale spytam
MariuszT napisał: 09.01.11 o godzinie 23:03
RewriteRule ^(.*)$ katalog/$1 [R=301,L]
EDIT
Ten wyraz „strona” jest zawsze na początku? Jeżeli tak to:
To było tak od razu
RewriteRule ^strona(.*)$ katalog/strona$1 [R=301,L]
esder napisał: 09.01.11 o godzinie 23:32
Dzięki wielkie
Combacik napisał: 09.03.11 o godzinie 11:33
witam wszystkich, ja mam problem z odwróceniem sytuacji. Jest ktoś, kto ma domenę X i przekierowuje ja na moja domenę Y. Problem w tym, że wprowadza to czytelników w błąd budując w nich przekonanie o jakimkolwiek powiązaniu biznesowym, tematycznym czy własnościowym. Jakaś sugestia co do obrony?
MariuszT napisał: 09.03.11 o godzinie 15:06
@Combacik
RewriteCond %{HTTP_HOST} ^(www\.)?domena_X.pl(.*) [NC]RewriteRule ^(.*)$ http://www.redtube.com/ [R=301,L]
GlassEye napisał: 20.06.11 o godzinie 13:46
Bradzo fajna strona, ja chyba też odzyskuję wiarę w internet, tak jak wiele lat temy było można znaleść wiecej informacji do nauki tak w którymś momencie wszystko staneło.
Ale OK.
mam pytanie do experta od 301
Jeśli mam stronę która wysypuje błedy i chcę zrobic przekierowanie na inną z taka samą zawrtością, czy to nie bedzie przez google odebrane jako duplikat?
I tez ważne pytanie, jeśli zrobię przekierowanie ze strony [A] na stronę [B]
i jeśli np strona [A] ma PR2 to po przekierowniu adres strony [A] bedzię w wynikach na tej samej pozycji? czy juz nie będzie indexowana tylko na miejscu [A] pojawi się [B] ?
MariuszT napisał: 20.06.11 o godzinie 13:52
Pytanie pierwsze: jeżeli robisz przekierowanie to nie będzie duplikatu bo nie będą dwie strony tylko jedna, ta nowa. Zrób 301 i google zrozumie, że zmieniasz stronę, stara jest do wywalenia i zastępujesz ją nową.
Pytanie drugie: po przekierowaniu strona [A] zostanie podmieniona na stronę [B]. [A] zniknie z indeksu i na jej miejsce pojawi się [B]. Strona [B] uzyska pozycję strony [A], jej PR itd. Tak jest przynajmniej w teorii
W praktyce wychodzi różnie, proces jest rozłożony w czasie itd. Ale to jedyny sensowny i oficjalnie zalecany sposób.
GlassEye napisał: 20.06.11 o godzinie 18:28
OK wielkie dzieki. Rozumiem że wszystkie linki prowadzące do strony [A] przejmie strona [B] itd
MariuszT napisał: 20.06.11 o godzinie 18:30
Tak, zgadza się. Dopóki będzie przekierowanie pod domeną [A] do domeny [B] dopóty linki prowadzące do domeny [A] będą dla google tak naprawdę linkami do domeny [B].
GlassEye napisał: 20.06.11 o godzinie 18:40
Fajnie
a co z takimi przekierowaniami?
np
<meta HTTP-EQUIV=”Refresh” CONTENT=”0; URL=http://www.STRONA[B].com”>
i np
<script language=”JavaScript”>
<!–
window. location =”http://www.STRONA[B].com”;
//–>
</script >
to jest też permanetne przkierowanie?
majac cos takiego, też strony [B] przejmują wszystko ze strony ktora przekierowuje?
i przekierowujaca wypada z indexu?
Jesli dobrze pamiatam to chyba google cos nie chętne były takim zabiegom, a szczególnie jeśli czas po którym następowało przekierowanie był za krótki.
MariuszT napisał: 20.06.11 o godzinie 18:50
To jest przekierowanie tymczasowe, 302. Google nie przenosi przy tym przekierowaniu siły linków, PR, nie zamienia adresów w swoich indeksach itd.
GlassEye napisał: 20.06.11 o godzinie 20:22
aaa no to jasne.
ale nurtyje mnie jeszcze jedno
przy 301 Strona [A] jesli zostanie usunieta z indexu i zostanie zastąpiona [B] to google będzie brało pod uwage linki wychodzące ze strony [A]? googleBot przejdzie na adresy z tej strony [A] ? Ciekawe, nie wiem jak z mocą tych linków ze strony [A] czy jeszcze ta strona bedzie miała jakąś wartość/
MariuszT napisał: 21.06.11 o godzinie 0:18
Strona [A] dla google przestaje istnieć. Jak miałoby to działać, przecież strony [A] już nie ma a więc i linków na stronie [A] nie ma.
nilo napisał: 26.08.11 o godzinie 14:57
hej sluchaj bardzo to czytelne to dla mnie super sprobuje ze swoim blogiem . ale mozesz powiedziec mi jeszcze czy jesli ja tylko aktualizuje strone ale nie robilam jej to jak moge znalezc ten htaccess ??
MariuszT napisał: 26.08.11 o godzinie 15:17
Pliku .htaccess może nie być. Nie jest wymagany jeżeli nie stosuje się żadnych przekierowań itd.
Paweł Benetkiewicz napisał: 03.01.12 o godzinie 15:06
@Panie „spec od 301″: usunięcie www z adresu niniejszej strony (http://www.tarnaski.eu/blog/un.....owanie-301) przekierowuje na http://www.tarnaski.eu/uniwers.....owanie-301, czyli nie ma /blog, co ostatecznie zmienia Pana tytuł ze speca na szpeca tak, jak Pana 301 zmienia blog na 404.
MariuszT napisał: 03.01.12 o godzinie 15:25
@Panie „czepiam się bo nie mam nic ciekawego do powiedzenia”, moje 301 jest w trakcie zmian bo będę zmieniał domenę na tarnaski.pl tylko mam teraz inne rzeczy na głowie i stanąłem w połowie. EOT.