Skocz do zawartości

.htaccess przekierowanie 301 zaindeksowanych stron, przepisywanie


Amigo

Rekomendowane odpowiedzi

Witam po latach :D

Ostatnio natrafiłem na dość dziwny problem. Mam stronę, która generuje linki w postaci domena.pl/produkt.php

Założeniem moim jest przepisanie tego typu linków na wygodniejsze adresy z rozszerzeniem html. Tworzę sobie plik .htaccess, ustawiam przekierowanie na adres z www:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena.pl[NC]
RewriteRule ^(.*)$ https://www.domena.pl/$1 [R=301,L]

W następnym kroku robię przepisanie linków

RewriteRule ^kontakt.html$ kontakt.php [L]
RewriteRule ^nasze-produkty.html$ oferta.php [L]

i tak dalej... Na stronie zamieniłem linkowanie na nowe adresy i wszystko przepisuje się elegancko. Problem zaczyna się pojawiać, kiedy chcę zaindeksowane przez Google podstrony przekierować na nowe. Używam do tego wpisów;

RewriteRule ^kontakt.php$ kontakt.html [R=301,L]
RewriteRule ^oferta.php$ nasze-produkty.html [R=301,L]

Problem 1. Na niektórych serwerach to działa, na innych nie. Co robię źle?

Problem 2. W ogóle nie działa przekierowanie tego typu linków. Przepisanie działa dobrze, ale w przypadku przekierowania zaindeksowanych stron w Google na te nowe za każdym razem otwiera się strona skarpetki-dziecięce-(.*).html

RewriteRule ^skarpetki-dziecięce-(.*).html$ produkty-skarpety.php?id=$1 [QSA]
RewriteRule ^produkty-skarpety.php?id=$1$ skarpetki-dziecięce-(.*).html [R=301,L]

Reasumując - robię coś źle? Pewnie tak, ale czy nie najprościej byłoby chyba zrobić samo przekierowanie 301 i utworzyć na serwerze pliki kontakt.html itd? Wiem, że to dużo więcej pracy, ale przekierowanie na przepisane strony nie bardzo mi chce działać, a zależy mi na tym, by Google zostawił zaindeksowane strony z pewnym PR i aby nie pojawił się problem duplicate content, gdy zaindeksuje strony kontakt.php i kontakt.html (głównie na serwerze, gdzie przekierowanie 301 nie działa i zostawiłem same przepisanie linków np. nazwa.pl).

Cały kod pliku .htaccess ma postać:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena.pl[NC]
RewriteRule ^(.*)$ https://www.domena.pl/$1 [R=301,L]
RewriteRule ^kontakt.html$ kontakt.php [L]
RewriteRule ^nasze-produkty.html$ oferta.php [L]
RewriteRule ^kontakt.php$ kontakt.html [R=301,L]
RewriteRule ^oferta.php$ nasze-produkty.html [R=301,L]
RewriteRule ^skarpetki-dziecięce-(.*).html$ produkty-skarpety.php?id=$1 [QSA]
RewriteRule ^produkty-skarpety.php?id=$1$ skarpetki-dziecięce-(.*).html [R=301,L]

Buziaczka za pomoc nie dam, bo grypsko się szerzy, ale będę wdzięczny za każdy trop. Pozdrawiam :)

Nie przegrałeś, dopóki walczysz!

Odnośnik do komentarza
Udostępnij na innych stronach

Problem 1 - różnie jest interpretowana . (kropka) na serwerach - należy ja odspecjalnić czyli dać \.html \.php w "condition".

Problem 2 - aby w nowym adresie skorzystać z danych w nawiasach w "condition" uzyj \\1 \\2 \\3 gdzie 1,2,3 to numer nawiasu czyli:

RewriteRule ^skarpetki-dziecięce-(.*).html$ produkty-skarpety.php?id=\\1 [QSA]

Natomiast odnosnie regułyponiżej, parametrów nie ma bezpośrednio w adresie, sprawdzaj %{QUERY_STRING}

RewriteRule ^produkty-skarpety.php?id=$1$ skarpetki-dziecięce-(.*).html [R=301,L]

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności