Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Przyjazne i brzydkie adresy URL jednocześnie?
Forum PHP.pl > Forum > Przedszkole
Gość
Do tej pory moja strona miała brzydkie adresy URL typu:
http://strona.pl/?url1=Reprezentacje&url2=Polska
teraz chciałbym zamienić to na przyjazne adresy typu:
http://strona.pl/Reprezentacje/Polska

Pytanie tylko, czy punktu widzenia SEO lepiej będzie gdy te stare linki z brzydkimi adresami URL nadal będą działały?

Z jednej strony tak, bo przez kilka lat odkąd mam stronę linkowałem właśnie tymi brzydkimi adresami URL, więc gdyby przestały działać to być może straciłbym moc tych wszystkich linków (i moja strona spadłaby w SERPach)?
Z drugiej strony nie, bo teraz każda będzie dostępna z dwóch adresów URL (nowego przyjaznego i starego brzydkiego), więc czy nie zostanie to uznane za Duplicate Content (co też negatywnie odbije się na pozycji w SERPach)?
Crozin
Wykonaj przekierowanie (301) ze starego adresu na nowy.
thek
Crozin Ci dobrze podpowiada i Twoje przypuszczenia są prawidłowe. Uwalenie starych adresów sprawiłoby, że straciłbyś dotychczasowe strony zaindeksowane i tym samym ich moc zgromadzoną. Nowe adresy są pewnie zbyt świeże i nie posiadają jej. Jednoczesne istnienie obu google faktycznie uzna za DC i Narzędzia webmastera na 200% wskazałyby to. Najprostsze i najlepsze rozwiązanie to rzucenie starej wersji nagłówka "Moved permanently", zyli popularna 301. Możesz to zrealizować na kilka sposobów. Na poziomie htaccess to oczywiście na start. Ja dla pewności zawsze do kontrolera robię jeszcze sprawdzanie, gdzie porównuję aktualny adres z paska do tego, który jest prawidłowym. Jeśli choć jedna literka się nie zgadza, ponowne przekierowanie 301 na w 100% prawidłowy adres. Jest to oczywiście w skrajnych przypadkach niezbyt wydajne, ale za to 100% SEO-pewne rozwiązanie.
kamil4u
Cytat
Na poziomie htaccess to oczywiście na start. Ja dla pewności zawsze do kontrolera robię jeszcze sprawdzanie

A kiedy htaccess może nie zadziałać? Co by się musiało stać? Jakieś skrajne przypadki? Dobrze nie znam tego tematu( htaccess ) dlatego pytam.
Crozin
.htaccess działa na poziomie serwera HTTP, a nie aplikacji. To niejednokrotnie może być złe środowisko dla wykonania takiego przekierowania (przykładowo, kiedy musisz pobrać slug tytułu artykułu, by przekierować na .../123/tytul-artykulu).
Gość
Cytat(thek @ 11.06.2012, 14:08:44 ) *
Na poziomie .htaccess to oczywiście na start.


Mój plik .htaccess wygląda obecnie tak:
Cytat
# przekierowanie z brzydkiego adresu na przyjazny:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]

# kod robiacy przkierowanie z www na bez www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.strona.pl(.*) [NC]
RewriteRule ^(.*)$ http://strona.pl/$1 [R=301,L]


Czyli w .htaccess robię tylko przekierowanie z brzydkich na przyjazne adresy,
a właściwą pracę z przyjaznymi adresami wykonuje już w PHP, tzn:
funkcja explode() rozdziela zmienną $_SERVER['PATH_INFO'] na podstawie znaku '/' i z tej tablicy wydobywam zmienne
Jak w moim przypadku powinienem więc zrobić w pliku .htaccess przekierowanie 301
z starych brzydkich adresów na nowe ładne?
Gość
Ehh trochę namieszałem.

Ten komantarz w pliku .htaccess jest błędny, bo powinno chyba być:
Cytat
# przekierowanie z przyjaznego adresu na brzydki:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]
Gość
Cytat(thek @ 11.06.2012, 14:08:44 ) *
Jednoczesne istnienie obu google faktycznie uzna za DC i Narzędzia webmastera na 200% wskazałyby to.


Gdzie konkretnie (w której opcji) w Narzędziach webmastera można zobaczyć czy na stronie jest zduplikowana treść?
Gość
Cytat(thek @ 11.06.2012, 14:08:44 ) *
Najprostsze i najlepsze rozwiązanie to rzucenie starej wersji nagłówka "Moved permanently", zyli popularna 301. Możesz to zrealizować na kilka sposobów.


Czy w PHP taki sposób:
header("Location: http://strona.pl/przyjazny-adres");
to przekierowanie 301, czy też trzeba to jakoś inaczej zrobić?
Crozin
Nie, to jest jedynie ustawienie nagłówka Location (wymaganego przy odpowiedzi HTTP 301). Musisz jeszcze ustawić sam kod odpowiedzi:
  1. header('HTTP/1.1 301 Moved Permanently');


Oczywiście, nie żadne <a h...> tylko sam adres URL. Parser BBCode forum szaleje. wink.gif
Gość
Podany przez Ciebie kod jest chyba równoważny z tym?

Cytat
header("Location: /foo.php",TRUE,301);

http://www.php.net/manual/en/function.header.php#78470

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.